引用在Visual Studio项目中使用ILMerge创建的程序集

Dan*_*fer 5 .net ilmerge

我在Visual Studio中有一个包含5个项目的解决方案.他们是:

  • Foo.Core:核心功能
  • Foo.Api:生成在核心之上的代码
  • Foo.Web:特定于Web的扩展
  • Foo.Web.Mvc:MVC特定的扩展
  • Newtonsoft.Json:第三方图书馆

我想使用ILMerge进行合并Foo.Core,Foo.Api并将Newtonsoft.Json其调用到单个程序集中Foo.这很容易.

我遇到的问题是,Foo.WebFoo.Web.Mvc都需要引用所有三个合并组件.

如果我引用原始程序集,则在执行ILMerge后它们将具有无效引用.

如果我引用ILMerged程序集,我必须引用一个调试程序集,然后在我打包之前更改它,这似乎并不理想.

我已经尝试创建一个名为的项目Foo,该项目引用3个合并的程序集并用ILmerged程序集替换它自己的输出,但这似乎根本不起作用.

有可靠的方法吗?

Joe*_*lly 2

ILMerge 旨在创建一个新的包/组件作为盒装“产品”(API、程序...),以简化程序集管理,例如部署、gac 引用、程序集可见性等,以供一体式使用或外部使用,不混合。

我的猜测是,如果您的项目中有一个或一个来生成合并的项目,则您必须PostBuildEvent在主程序集/项目上设置一个(?),它将在您的项目中作为外部程序集引用。Foo.ApiPreBuildEventFoo.WebFoo.Web.MvcFooFoo.WebFoo.Web.Mvc

您可以通过设置 MsBuild 任务使其在 Visual Studio 中更加集成。示例(来自 Stackoverflow