有没有办法将C#文件编译成一个可以提供给用户的文件?
答案 0 :(得分:12)
一种方法是使用ILMerge。这会将多个程序集合并为一个程序集(想想将所有DLL和主exe合并到一个exe中)。
答案 1 :(得分:2)
是:)但您必须将所有资源放入单个程序集并将其编译为EXE。另请注意,目标系统还必须安装所需的.NET基础结构。
请注意,目标系统上的安全策略可能会阻止用户直接运行您的应用。
最后,除非您“NGEN”您的代码,否则它将在第一次运行时jitted。这将产生一些启动时间成本。在某些情况下,这可能是相当可观的。
答案 2 :(得分:2)
如果您还希望合并应用程序所需的.Net程序集,您可以使用类似This的内容甚至在System.dll,System.Windows.Forms.dll等中进行编译,以便最终用户甚至不需要.Net安装。
答案 3 :(得分:0)
我从一个类似的问题得到了这个问题(对于发布答案的人也很抱歉 - 我似乎无法找到原文链接到这里):
how to embed your application’s dependent DLLs inside your EXE file
这是Jeffrey Richter的CLR Via C#的摘录。我还没有尝试过,但看起来很有希望。我认为它也适用于WPF(即将自己找到)。