Возможно, я пропускаю что-то очевидное здесь, но...
Я разработал допускающий повторное использование универсальный проект библиотеки классов C#, говорят, что (A.dll), который ссылки 3 других блока говорят (B.dll, C.dll и D.dll)
Однако, если я хочу снова использовать свой A.dll компонента в другом проекте, я все еще должен включать ссылки на B.dll, C.dll и D.dll.
Есть ли какой-либо способ, которым можно настроить A.dll для встраивания всех его зависимостей в A.dll, таким образом, я не должен включать другие 3 блока?
Удачи
Можно объединить сборки с помощью инструмента 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.
Это похоже на статическое связывание библиотек DLL, которое отлично работает с собственным C ++. Насколько я знаю, вы не можете статически связывать сборки в коде .NET, поэтому вам нужно включить все библиотеки DLL.