我正在尝试将多个程序集合并为一个作为 WCF 服务的“代理”程序集。目前,由于我的继承方案,代理的用户需要引用包含数据协定的程序集,以及我的域程序集。
我想为此使用 ILMerge。特别是,ILMerge-Tasks 项目看起来很有希望,尤其是他们项目主页中的这一行:
ILMerge-Tasks 项目主页:
...它甚至包括一个合并 ILMerge 和任务 dll 的构建后事件,这样您就可以在不存在 ILMerge.exe 的情况下使用该任务。
这正是我想要完成的,但我真的不知道如何去做。请帮忙!
其他相关(可能)信息:
- 我们在 TFS 中使用自动构建,因此不存在ilmerge.exe将是一大优势
更新:
所以我在我的项目中包含了 ILMerge.MSBUild.Tasks.dll 并将以下内容添加到我的构建文件中(取自 ilmerge 项目主页):
<Target Name="AfterBuild">
<UsingTask TaskName="ILMerge.MSBuild.Tasks.ILMerge"
AssemblyFile="ILMerge.MSBuild.Tasks.ILMerge"/>
<ItemGroup>
<MergeAsm Include="BarProject.dll" />
<MergeAsm Include="FooProject.dll" />
</ItemGroup>
<ILMerge InputAssemblies="@(MergeAsm)" OutputFile="FooBar.dll" />
</Target>
但现在我收到以下错误:
未找到“UsingTask”任务。检查以下内容: 1.) 项目文件中的任务名称与任务类的名称相同。2.) 任务类是“公共的”并且实现了 Microsoft.Build.Framework.ITask 接口。3.) 在项目文件或位于“C:\Windows\Microsoft.NET\Framework\v4.0.30319”目录的 *.tasks 文件中正确声明了任务。