在一个包含多个项目的解决方案中,我有一个命名空间设置为Company.Product.UI的项目和另一个命名空间设置为Company.Product.UI.WebPages的项目。我的问题是构建这两个项目会得到两个dll文件。如何才能只生成一个dll文件并保留当前的解决方案结构?我使用的是Visual Studio 2008和C#。
如果你想将 ILMerge 自动化为 MSBuild 任务,则建议你查看 ilmerge-tasks:ILMerge 是一个实用工具,可用于将多个 .NET 程序集合并为一个程序集。它可以从 Microsoft .NET Framework Developer Center 的 Tools & Utilities 页面免费使用。
想在自动化构建期间使用 ILMerge 吗?ILMerge Tasks 包含了两个可构建的项目,允许您从 MSBuild 和 NAnt 中作为任务访问 ILMerge。它甚至包括一个后构建事件,可以将 ILMerge 和任务 dll 合并,以便您可以在没有 ILMerge.exe 的情况下使用该任务。
我想你可以创建一个新的项目文件,其中包含来自两个项目的所有文件。这样,您可以保留当前的开发结构,并使用合并的项目文件从项目中构建输出以发布。项目文件是相当简单的xml文件,因此如果您在文本编辑器中打开其中一个文件,您很快就会弄清它们的工作方式。
显然,这种方法的缺点是当一个项目中添加或删除文件时,您需要维护这个第三个项目文件,但如果这不经常发生,那么这种方法可能非常有效。