ILMerge и ссылки на проекты

У меня есть решение VS (.sln), которое имеет следующую структуру.

  • Проект А
  • Проект B (содержит ссылку на проект A, а также ссылки на сторонние сборки, такие как NHibernate, StructureMap и т. Д.)

Я хочу использовать ILMerge для включения сторонних сборок в ProjectB.dll. Однако я не хочу объединять ProjectA.

Я использовал процедуру, выделенную здесь. У меня это отлично сработало в отношении слияния сторонних сборок. Однако при сборке ProjectB я все еще получаю эту ошибку:

Во время слияния возникла исключительная ситуация: неразрешенная ссылка на сборку не разрешена: ProjectA.

Я не указываю явно, что ProjectA нужно объединить. Другими словами, я не говорю правду об этом проекте. Как заставить IlMerge игнорировать ProjectA? Кстати, ProjectA - это ссылка на проект, а не прямая ссылка на сборку.

Спасибо!


person ActionJackson    schedule 20.06.2010    source источник


Ответы (2)


Используйте аргумент /lib для ILMerge, передав каталог, содержащий ProjectA.dll.

В частности (при условии, что целевая платформа ProjectB - это клиентский профиль .NET 4.0):

ILMerge.exe /out:MasterDll.dll
            /targetplatform:v4,"C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Profile\Client"
            /lib:ProjectA\bin\Release
            ProjectB\bin\Release\ProjectB.dll
            Libraries\NHibernate\NHibernate.dll
            Libraries\StructureMap\StructureMap.dll
            ...
person Stephen Cleary    schedule 16.09.2010

Для 4.0 просто используйте:

/ targetplatform: v4, «% ProgramFiles% \ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0»

person chuck    schedule 06.08.2014