2011-09-21 81 views
3

我正在嘗試將多個程序集合併爲一個作爲WCF服務的「代理」程序集。目前,代理服務器的用戶需要引用包含數據合同的程序集,還有我的域名程序集,因爲我的繼承方案。ILMerge問題

我想爲此使用ILMerge。特別是,ILMerge任務項目看起來很有希望,特別是這條線從他們的項目主頁:

ILMerge任務項目主頁:

...It even includes a post-build event that merges ILMerge and the task dll so that you can use the task without ILMerge.exe being present.

這正是我想達到什麼,但我真的不知道該怎麼去做。請幫忙!

其他相關的(也許是)信息:

  • 我們使用自動構建在TFS,所以沒有ilmerge.exe目前將是一大利好

更新:

因此,我在我的項目中包含了ILMerge.MSBUild.Tasks.dll,並將以下內容添加到m Ÿ構建文件(從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> 

但現在我得到以下錯誤:

The "UsingTask" task was not found. Check the following: 1.) The name of the task in the project file is the same as the name of the task class. 2.) The task class is "public" and implements the Microsoft.Build.Framework.ITask interface. 3.) The task is correctly declared with in the project file, or in the *.tasks files located in the "C:\Windows\Microsoft.NET\Framework\v4.0.30319" directory.

+0

也許你最好在尋找關於使用MSBuild任務(這是ILMerge-Tasks是什麼)和TFS的幫助。 –

+0

AssemblhyFile是否需要完整的文件名稱而不是程序集名稱空間? – kenny

+0

我試過使用實際的程序集文件名ILMerge.MSBuild.Task.dll,但我仍然得到相同的錯誤 – Didaxis

回答

4

解決。

  • 我做使用上述
  • 配置我也使用ILMerge.MSBuild.Tasks.dll

這是我所採取的步驟:

  • 添加了對的參考ILMerge.exe(在一個從Microsoft Research)到我的項目
  • 添加了此PostBuild進入到我的MSBuild文件(.csproj的):

    ILMerge /out:FooBar.dll Bar.dll Foo.dll