Зависимости сборки .NET - PullRequest
6 голосов
/ 15 февраля 2010

Возможно, мне здесь не хватает чего-то очевидного, но ...

Я создал универсальный проект библиотеки классов C # (A.dll), который ссылается на 3 других сборки (B.dll, C.dll и D.dll)

Однако, если я хочу повторно использовать мой компонент A.dll в другом проекте, мне все равно придется включить ссылки на B.dll, C.dll и D.dll.

Можно ли как-то настроить A.dll для встраивания всех его зависимостей в A.dll, чтобы мне не нужно было включать другие 3 сборки?

Приветствия

Ответы [ 2 ]

6 голосов
/ 15 февраля 2010

Можно объединить сборки, используя инструмент ILMerge :

C:\Program Files\Microsoft\ILMerge\ILMerge.exe /target:library /out:abcd.dll a.dll b.dll c.dll d.dll"

Это объединит dll a, b, c и d в abcd.dll. Он также объединит символы отладки, но не документацию XML.

Также вам придется ссылаться на саму dll в новых проектах, а не на соответствующие проекты. Исключением является случай, когда вы объединяете библиотеки в исполняемый файл, в этом случае вы можете ссылаться на соответствующие библиотеки / проекты, потому что они будут загружены вместе с исполняемым файлом.

В Mono Project также есть инструмент для этого, называемый mkbundle.

Также доступен ILRepack , который предназначен для совместимости с ILMerge, но является FLOSS.

0 голосов
/ 15 февраля 2010

Это было бы что-то вроде статического связывания библиотек DLL, которое прекрасно работает с собственным C ++. Насколько я знаю, вы не можете статически связывать сборки в .NET-коде, поэтому вы должны включить все библиотеки DLL.

...