Задача ILMerge не найдена - Azure DevOps Build Pipeline - PullRequest
0 голосов
/ 15 января 2020

У меня проблема с Azure настройкой конвейера сборки. Сбой задачи «Построение решения» со следующей ошибкой.

[ошибка] Source \ Libraries \ PluginCore \ PluginCore.csproj (129,5): Ошибка MSB4036: Задача «ILMerge» не найдена , Проверьте следующее: 1.)

Имя задачи в файле проекта совпадает с именем класса задачи. 2.) Класс задачи «publi c» и реализует интерфейс Microsoft.Build.Framework.ITask. 3.) Задача правильно объявлена ​​в файле проекта или в файлах * .tasks, расположенных в папке "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ 15.0 \ Bin" каталог.

Я пытался добавить задачу "ILMerge" в конвейер сборки, но не смог найти ни одной задачи с таким именем. Я не могу избежать использования ILMerge, так как мне нужно объединить dll класса помощника. Кто-нибудь сталкивался с этой проблемой и получил ее решение? Пожалуйста, поделитесь своими данными

1 Ответ

0 голосов
/ 16 января 2020

Ошибка MSB4036: задача «ILMerge» не найдена.

Я пытался добавить задачу «ILMerge» в конвейер сборки, но не смог найти задачу с таким именем.

Задача здесь означает msbuild tasks вместо devops tasks , это разные вещи. Сообщение об ошибке означает, что вы вызываете задачу с именем ILMerge в файле проекта (xx.csproj), в то время как эта задача не определена или не может быть найдена.

Проверьте Ссылка на задачу Msbuild здесь и мы можем обнаружить, что ILMerge задача не является предопределенной задачей из msbuild. Для этого, если у вас есть этот контент в файле проекта:

  <Target Name="Test" AfterTargets="build">
    <Message Text="Test starts..." Importance="high" />
    <ILMerge /> <!--This is the direct cause of your issue.-->
  </Target>

Теперь вы получите:

enter image description here

Чтобы устранить это сообщение об ошибке:

Вы должны удалить <ILMerge ... /> в строке129 из PluginCore.csproj. Или вы должны убедиться, что у вас есть соответствующая сборка, указанная в файле проекта, чтобы вы могли использовать задачу ILMerge из этой сборки.

См. Запись задачи , одна задача msbuild на самом деле одна класс, который реализует интерфейс ITask или является производным от класса Task. Так что, если у вас есть одна пользовательская или сторонняя сборка, которая определила задачу (класс) ILMerge в коде, вы все равно можете использовать задачу. Тогда ваша проблема может быть связана с тем, что вы не добавляете эту сборку в элемент управления курсом или не восстанавливаете пакет nuget, который успешно содержит сборку.

Существует множество пакетов nuget, которые могут содержать задачи, связанные с ILmerge, например one , two , three .

1.Если у вас нет пользовательской сборки, содержащей ILMerge, то ожидается, что эта ошибка будет получена, поскольку это не предопределенная задача. Вы можете проверить пакеты nuget выше, чтобы выполнить задание IlMerge.

2.Если эта сборка работает локально, проблема возникает только в конвейере Devops. Затем убедитесь, что вы восстановили пакет nuget, содержащий сборку (dll, которая определяет класс ILMerge), перед задачей сборки. Или убедитесь, что вы добавили сборку в систему управления версиями ( не рекомендуется ), если вы не используете способ пакета nuget.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...