Visual Studio C# MSBuild.ILMerge.Task проблема с Сборка не помечена как содержащая только управляемый код - PullRequest
0 голосов
/ 14 июля 2020

У меня есть решение с двумя проектами, например:

  • MainDLL
  • LibraryDLL

Я хотел бы объединить LibraryDLL внутри MainDLL. Моему приложению требуется импортировать только один файл в качестве плагина. Я загрузил NUGet Packacged:

  • ILMerge
  • MSBuild.ILMerge.Task

После настройки, когда я нажимаю сборку, я получаю следующую ошибку:

ILMerge.Merge: The assembly 'ChilkatDotNet4' is not marked as containing only managed code.
(Consider using the /zeroPeKind option -- but read the documentation first!)

Я не использую его напрямую и не нуждаюсь в нем, но он, по всей вероятности, ссылается на другую DLL, на которую есть ссылки внутри обоих проектов (мне не нужно включать ее, потому что она уже есть в приложении). Как избежать этой проблемы? Я попытался установить флаг:

<!-- See ILMerge documentation -->
<ILMergeAllowZeroPeKind></ILMergeAllowZeroPeKind>

Верно или ложно, но ничего не изменилось

Ответы [ 2 ]

1 голос
/ 16 июля 2020

Visual Studio C# Проблема с MSBuild.ILMerge.Task: Сборка не помечена как содержащая только управляемый код

Я думаю, что ваша LibraryDLL - это c ++ проект библиотеки native Dynami c и ILMerge не могут работать со сборками, содержащими собственный код.

Вы должны либо распаковать dll во время выполнения перед использованием, либо отправить dll.

Предложение

1) Я думаю, вы написали событие перед сборкой или событие после сборки для запуска этой команды, поэтому в вашей команде добавьте /zeroPeKind.

Как ilmerge /target:xxxx /zeroPeKind /out:xxxxx xxxxxxxxx

2) Кроме того, вы также можете попробовать этот обходной путь (используйте DllImport) для устранения проблемы.

0 голосов
/ 17 июля 2020

Работа с / zeroPeKind у меня не удалась (не значит, что это неправильно). Я также не могу перестроить эту собственную библиотеку C ++, потому что она поступает от внешнего поставщика.

После проверки https://github.com/emerbrito/ILMerge-MSBuild-Task/wiki

Объединить сборки с помощью Copy Local = True

Я изменил все остальные настройки свойства References Copy Local на false.

Я оставил Copy Local = true только для ссылки на мою общую библиотеку проекта, которую я хотел объединить с моей основной проект.

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