ILMerge вопрос - PullRequest
       34

ILMerge вопрос

3 голосов
/ 21 сентября 2011

Я пытаюсь объединить несколько сборок в одну сборку «Прокси» для службы 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.) Задача правильно объявлена ​​в файле проекта или в файлах * .tasks, расположенных в каталоге «C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319».

1 Ответ

4 голосов
/ 21 сентября 2011

решаемая.

  • Я НЕ использовал приведенную выше конфигурацию
  • Я НЕ использовал ILMerge.MSBuild.Tasks.dll

Вот шаги, которые я предпринял:

  • Добавлена ​​ссылка на ILMerge.exe (из Microsoft Research ) в мой проект
  • Добавил эту запись PostBuild в мой файл MSBuild (.csproj):

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

...