可能重复:
在编译的可执行文件中嵌入 DLL
我想将我的 C# 应用程序编译为单个 exe 文件。问题是我的项目依赖于许多其他项目,导致在Release
编译时文件夹中有许多 dll。有什么方法可以制作包含这些 dll 的 exe?
注意:它不需要独立于 .NET 框架。我假设任何使用这个 exe 的人都会安装它。
可能重复:
在编译的可执行文件中嵌入 DLL
我想将我的 C# 应用程序编译为单个 exe 文件。问题是我的项目依赖于许多其他项目,导致在Release
编译时文件夹中有许多 dll。有什么方法可以制作包含这些 dll 的 exe?
注意:它不需要独立于 .NET 框架。我假设任何使用这个 exe 的人都会安装它。
.NET 附带了一个名为 ILMerge 的工具,可以将多个程序集打包到一个文件中。你会像这样使用它:
ilmerge /target:winexe /out:myoneexecutable.exe Foo.exe Bar1.dll Bar2.dll
ILMerge 是一种选择,但它不能合并 WPF 程序集。您可以将程序集作为资源嵌入并动态加载它们。请参阅此 Richter 文章。
我相信最接近能够编译为单个可执行文件的方法是使用 Visual Studio 的安装项目功能/向导来生成标准 MSI 包,然后您可以使用它来分发您的应用程序。
但是,很可能有 3rd 方工具可让您将所有内容压缩到一个文件中。但我认为这不会比标准的 MSI 方法为您带来任何好处——事实上,这只是构建过程中的一个额外手动步骤,您并不需要这样做。