Скомпилируйте проект C # в одну DLL - PullRequest
6 голосов
/ 04 августа 2011

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

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


Решение: я добавил строку к действию Post-build проекта, чтобы хорошая сборка выполняла следующие действия:

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

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

Ответы [ 3 ]

9 голосов
/ 04 августа 2011

(этот ответ был отредактирован для обновления ссылок на новые места загрузки и для отражения новых идей)

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

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

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

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

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

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


Примечание (1): если вам нужно объединить параллельные сборки (т. Е. Смешать собственные 64-битные и 32-битные сборки), вам следует обратиться к этой статье SOдинамическая загрузка параллельных сборок .

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

1 голос
/ 04 августа 2011

Ищите внешний инструмент ILMerge от Microsoft: http://research.microsoft.com/en-us/people/mbarnett/ilmerge.aspx Он может объединять несколько сборок в одну.

0 голосов
/ 04 августа 2011

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

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

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

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

...