Как встраивать модули.NET в самостоятельную сборку?

Я пытаюсь автоматизировать генерацию сборки из сетевых модулей. Я попытался использовать инструмент "al.exe" с этой строкой: al module1.netmodule module2.netmodule /target:library /out:assembly.dll. Моя проблема в том, что моя сборка не встраивает мои сетевые модули, а только ссылается на них: - если я открываю свою сборку с помощью инструмента "ildasm.exe", я вижу только манифест - если я импортирую свою сборку в новый проект Visual Studio, он не работает, если я не копирую два сетевых модуля рядом со сборкой

Я попробовал инструмент "ILMerge", на моем простом примере он работает нормально: инструмент "ildasm.exe" показывает правильные классы, и сборка может использоваться в проекте Visual Studio. Но есть ограничения (WPF), с которыми я боюсь столкнуться в своем проекте.

Мои вопросы: - Есть ли способ создать независимую сборку из сетевых модулей, используя "al.exe" или "csc.exe"? Как встраивать сетевые модули в сборку, а не только ссылаться на них? - Должен ли я использовать "ILMerge.exe"? - Что такое реальное использование "al.exe"? Не может "csc.exe" сделать то же самое, используя параметр "/addmodule"?

1 ответ

Вы пробовали Link.exe - он сделает эту работу. Вы можете найти более подробную информацию о компоновщике здесь:

http://msdn.microsoft.com/en-us/library/y0zzbyt4(v=vs.71).aspx

Инструмент Ссылка устанавливается как часть Visual Studio. На моей машине Link.exe установлен по адресу: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64

Структура команд, которая работает для меня, показана ниже:

LINK             = "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\Link.exe"
LIBPATH1         = "$(PROGRAMFILES)\Microsoft Visual Studio 8\SDK\v2.0\lib"
LIBPATH2         = "$(PROGRAMFILES)\Microsoft SDKs\Windows\v7.0A\Lib"

$(LINK) /LIBPATH:$(LIBPATH1) /LIBPATH:$(LIBPATH2) /DLL /nologo /LTCG /out:$(DLL_NAME).dll $(EXT_MODULE1) $(EXT_MODULE2) $(EXT_MODULE3) ... 
Другие вопросы по тегам