可能重复:
Embedding DLLs in a compiled executable如何在Visual Studio中创建独立的exe文件?
我想要编译我的C#应用程序到一个EXE文件。问题是我的项目在编译时依赖于许多其他项目,导致Release
文件夹中有很多dll。有没有办法让这些dll包含在EXE文件中?
注意:它不需要独立于.NET框架。我假设任何使用这个exe的人都会安装它。
可能重复:
Embedding DLLs in a compiled executable如何在Visual Studio中创建独立的exe文件?
我想要编译我的C#应用程序到一个EXE文件。问题是我的项目在编译时依赖于许多其他项目,导致Release
文件夹中有很多dll。有没有办法让这些dll包含在EXE文件中?
注意:它不需要独立于.NET框架。我假设任何使用这个exe的人都会安装它。
.NET附带一个名为ILMerge的工具,其中可以将多个程序集打包到一个文件中。你会使用它想:
ilmerge /target:winexe /out:myoneexecutable.exe Foo.exe Bar1.dll Bar2.dll
它没有打扰我担心单独的文件,但我偶然发现这一点,现在当然是theres没有机会有人会不小心删除1部分文件,或混合版本等。谢谢! – BugFinder
我相信你会得到能够编译为一个可执行文件使用Visual Studio的安装项目功能最接近/巫师生成标准MSI软件包,然后你可以用它来分发你的申请。
但是,可能有第三方工具可用于将所有内容压缩成一个文件。但我不认为这会让你得到任何超过标准MSI方法的东西 - 实际上,这只是构建过程中的一个额外的手动步骤,您并不需要这么做。
ILMerge是一个选项,但它不能合并WPF程序集。您可以将程序集作为资源嵌入并动态加载它们。请参阅this Richter article。
另请参阅http://stackoverflow.com/questions/189549/embedding-dlls-in-a-compiled-executable – Rawling