【发布时间】:2010-01-28 20:01:43
【问题描述】:
我有一个控制台应用程序和两个类库项目。
控制台应用程序必须投射对类库项目的引用。
当我构建时,它会为这两个项目生成 DLL。我必须将这些包含在我的控制台应用程序 exe 文件中吗?有没有办法让我不必包含这 2 个 dll?
理想情况下,我想要一个 exe。
【问题讨论】:
标签: c# .net deployment dll
我有一个控制台应用程序和两个类库项目。
控制台应用程序必须投射对类库项目的引用。
当我构建时,它会为这两个项目生成 DLL。我必须将这些包含在我的控制台应用程序 exe 文件中吗?有没有办法让我不必包含这 2 个 dll?
理想情况下,我想要一个 exe。
【问题讨论】:
标签: c# .net deployment dll
您必须包含任何引用的程序集,因为它们是您的应用程序的依赖项。
话虽如此,Microsoft 提供了一个名为 ILMerge 的工具,可让您将依赖程序集与您的可执行文件结合起来,创建一个包罗万象的可执行程序集,然后将其发送给客户。
【讨论】:
查看ILMerge。
【讨论】:
您可以使用ilmerge 将程序集合并为一个,否则您必须部署exe 文件和dll。 例如你可以运行类似的命令
ilmerge /target:winexe /out:MyProg.exe Program.exe ClassLib1.dll ClassLib.dll
Visual Studio 没有提供执行此操作的内置方法,因此您必须手动运行上述命令,作为 Post Build 事件,或者手动将其添加到您的 .csproj 文件中。
【讨论】:
您应该能够通过选择您的引用并将“复制本地”属性设置为 false 来完成。
【讨论】:
谨慎使用 ILMerge,并确保您了解走这条路线的性能影响。
【讨论】: