У меня есть 3 проекта:
- A_MainProject (стартовый проект)
- B_IntermediateProject
- C_SharedClassLibrary
Зависимости:
А зависит от В и С
В зависит от С
и C зависит только от системы.
У каждого проекта есть собственное пространство имен.
Пока ILMerge не установлен, все работает нормально.
Если ILMerge активирован для проекта A ("A_MainProject"), все по-прежнему работает нормально, и создается один автономный исполняемый файл для проекта A.
Если ILMerge теперь также активирован для B_IntermediateProject, я получаю следующую ошибку:
Error 2 The type 'C_SharedClassLibrary.SharedClass' exists in both 'c:\dev\ILMergeError\B_IntermediateProject\bin\Debug\B_IntermediateProject.exe' and 'c:\dev\ILMergeError\C_SharedClassLibrary\bin\Debug\C_SharedClassLibrary.dll' C:\dev\ILMergeError\A_MainProject\Program.cs 12 A_MainProject
Я использую «задачу MSBuild ILMerge» 1.0.3-rc2 с «ILMerge» 2.13.0307 (от mbarnett).
Минимальное решение содержит 3 проекта по одному классу в каждом. В этой версии ILMerge активирован только для одного проекта и работает:
В этой версии он также активирован в проекте B и выдает ошибку:
Если я объединяю два исполняемых файла и dll с помощью ILMerge извне (ILMergeGUI), все работает нормально.
Заранее спасибо за ответ, Ксан-Кун.
Application
может вызвать то, что известно как столкновение методов, поэтому вам придется полностью квалифицировать метод по имени класса.
имя метода имеет смысл, или, поскольку у вас естьAnotherMessageBox
во всех 3, вам придется полностью квалифицировать его по его пространству имен, было бы неплохо увидеть некоторый код в заголовке .cs, как все 3 определены - person MethodMan   schedule 22.04.2015