我如何强制使用 exe 构建 DLL,以便只有一个文件?

发布于 2024-10-11 15:20:06 字数 51 浏览 2 评论 0原文

我有一个简单的 C# 应用程序。我希望 DLL 位于 exe 文件“内部”。我该怎么做?

i have a simple app in c#. i would like the DLL to be "inside" the exe file. how do i do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

南街女流氓 2024-10-18 15:20:06

ILMerge正是您正在寻找的


页面有点误导,ILMerge 根据其 实际网页

ILMerge 应该可以正常工作
.NET 的较新版本。只需使用
选项:/targetplatform:v4,。为了
版本 3.5,您可能不需要
设置目标平台,但是您
可能需要添加v3.5框架
目录作为 /lib 选项,以便
可以从那里找到组件。
(除非他们属于 GAC,其中
无论如何他们都会被发现。)运行
ILMerge 在 v4.0 运行时,使用这个
配置文件。


要回答如何使用其他答案中的问题中的它

用法:ilmerge [/lib:目录]*
[/log[:文件名]] [/keyfile:文件名
[/延迟信号]]
[/internalize[:文件名]] [/t[目标]
:(库|exe|winexe)] [/关闭]
[/ndebug] [/ver:版本] [/copyattrs
[/allowMultiple]] [/xmldocs]
[/attr:文件名] [/ta
获取平台:[,]
| /v1 | /v1.1 | /v2 | /v4]
[/useFullPublicKeyForReferences]
[/通配符] [/zeroPe 种类]
[/allowDup:类型]* [/union] [/align:n]
/out:文件名
[...]

因此 ilmerge /out:Combined.exe mainFile.exe otherDll.dll 适合您的情况,因为大多数默认值应该没问题

ILMerge does exactly what you are looking for


the page is a little misleading, ILMerge works on V3 and V4 assemblies per its actual webpage

ILMerge should work just fine with
newer versions of .NET. Just use the
option: /targetplatform:v4,. For
version 3.5, you probably don't need
to set the target platform, but you
may need to add the v3.5 framework
directory as a /lib option so that
assemblies from there can be found.
(Unless they're in the GAC in which
case they'll be found anyway.) To run
ILMerge in the v4.0 runtime, use this
config file.


To answer how do you use it from your question in the other answer

Usage: ilmerge [/lib:directory]*
[/log[:filename]] [/keyfile:filename
[/delaysign]]
[/internalize[:filename]] [/t[arget]
:(library|exe|winexe)] [/closed]
[/ndebug] [/ver:version] [/copyattrs
[/allowMultiple]] [/xmldocs]
[/attr:filename] [/ta
rgetplatform:[,]
| /v1 | /v1.1 | /v2 | /v4]
[/useFullPublicKeyForReferences]
[/wildcards] [/zeroPe Kind]
[/allowDup:type]* [/union] [/align:n]
/out:filename
[...]

So ilmerge /out:Combined.exe mainFile.exe otherDll.dll for your case as most of the defaults should be fine

对你而言 2024-10-18 15:20:06

ILMerge 可以对 .NET 程序集执行此操作 - 尽管它有一些某些类型的程序集(例如 WPF 程序集)的限制。

您也可以将程序集用作资源并按需加载,或使用支持程序集合并的众多商业混淆器之一。许多第三方选项支持更精细的依赖关系合并和/或依赖关系嵌入。 SmartAssembly 就是一个很好的例子,它支持这两个选项。

ILMerge can do this for .NET assemblies - though it has some limitations with certain types of assemblies (such as WPF Assemblies).

You can, alternatively, use the assembly as a resource and load it on demand, or use one of the many commercial obfuscators which support assembly merging. Many of the third party options support more elaborate depedency merging and/or dependency embedding. A good example of this is SmartAssembly, which supports both options.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文