3

WCFサービスの「プロキシ」アセンブリとして複数のアセンブリを1つにマージしようとしています。現在、プロキシのユーザーは、データコントラクトを含むアセンブリと、継承スキームのためにドメインアセンブリを参照する必要があります。

これにはILMergeを使用したいと思います。特に、ILMerge-Tasksプロジェクトは有望に見えます。特に、プロジェクトホームからのこの行は次のとおりです。

ILMerge-タスクプロジェクトホーム:

... ILMerge.exeが存在しなくてもタスクを使用できるように、ILMergeとタスクdllをマージするビルド後のイベントも含まれています。

これはまさに私が達成したいことですが、私はそれをどうやって行うのか本当にわかりません。助けてください!

その他の関連する(おそらく)情報:

  • 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ファイルで正しく宣言されています。

4

1 に答える 1

4

解決しました。

  • 上記の構成は使用しませんでした
  • ILMerge.MSBuild.Tasks.dllを使用しませんでした

これが私が取ったステップです:

  • ILMerge.exeMicrosoft Researchのもの)への参照をプロジェクトに追加しました
  • このPostBuildエントリをMSBuildファイル(.csproj)に追加しました。

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

于 2011-09-21T17:43:07.370 に答える