2011-08-04 7 views
6

У меня есть базовый проект, который передает два разных проекта. Я хочу, чтобы основной проект скомпилировал все ссылки в одну dll во время компиляции.Компилировать проект C# в одну dll

Это должно быть нечто, что встроено в сборку проекта, чтобы разработчикам Jr не пришлось об этом беспокоиться.


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

$(ProjectDir)ilmerge.exe /out: /ver: <.dll> <.dll> 

ilmerge.exe был перенесен в проект и выше строка принимает данные dll и создает один.

+2

Хорошо, так в чем ваш вопрос? Вы отметили ilmerge, который является инструментом, который вы можете использовать для этого. У вас есть вопрос? – FishBasketGordo

+0

http://stackoverflow.com/questions/1829531/how-do-i-merge-multiple-net-assemblies-into-a-single-assembly – Damith

+0

Извините, я знаю, как использовать инструмент с NuGenUnify, но я хочу это произойдет, когда я скомпилирую проект. Могу ли я добавить к этому процессу? – Arnej65

ответ

9

(этот ответ был отредактирован, чтобы обновить ссылки на новые места загрузки и отражать новые идеи)

Лучше всего использовать Micorosoft's ILMerge. Раньше он был доступен как отдельная загрузка из Microsoft Research (это не часть VS или .NET SDK).

original version был сохранен до 2012 года. Теперь это NuGet package, что является лучшим способом получить его в настоящее время и добавить его в свой проект и построить сервер.

В качестве альтернативы вы можете попробовать ILMerge GUI из CodePlex, который предоставляет интерфейс GUI для ILMerge. Его развитие было прервано, но теперь оно снова активно.

A Codeproject article on ILMerge объясняет, как использовать его и объясняет некоторые прецеденты. Пример команда:

ilmerge /target:winexe /out:AllInOne.exe NormalProgram.exe Lib1.dll Lib2.dll 

В качестве альтернативы, вы можете использовать Fody с Costura.Fody, как описано в этой SO response.


Примечание (1): если вам необходимо объединить бок о бок узлов (то есть, смесь родной 64 бит и 32 бита сборки), вы должны проконсультироваться this SO article on loading side-by-side assemblies dynamically.

Примечание (2): чтобы добавить это как неотъемлемый шаг в процесс сборки, просто перейдите в «Свойства проекта»> «События сборки»> нажмите «Редактировать пост-сборку» и заполните команду сверху. Нажмите «Макросы», чтобы увидеть, как ссылаться на текущий файл или сборку.

0

Вы можете использовать ILMerge для объединения нескольких сборок:

ILMerge утилита для объединения нескольких сборок .NET в единую сборку .NET. Он работает как с исполняемыми файлами, так и с DLL и имеет несколько опций для управления обработкой и форматированием вывода. Подробнее см. Сопроводительную документацию.

Вы можете объединить базовые сборки вместе и использовать результирующий сборник в качестве ссылки на другие ваши проекты.

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