2010-06-20 4 views
0

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

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

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

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

Исключение произошло при слиянии: Неразрешенная ссылка на сборку не разрешена: ProjectA.

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

Спасибо!

ответ

4

Используйте аргумент /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 
      ... 
0

Для 4.0 просто использовать:

/targetplatform: v4, "% ProgramFiles% \ Reference Сборки \ Microsoft \ Framework.NETFramework \ v4.0 "