Ошибка 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>
Теперь вы получите:
Чтобы устранить это сообщение об ошибке:
Вы должны удалить <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.