2016-03-31 1 views
0

Я использую Visual Studio 2013.Объединяя узлы с визуальной студии с использованием ILMerge или что-то еще

У меня есть библиотека # класс проектов 3 C, A, B, C. &

A Ссылки B

B referencess C

Когда я компилирую и создаю проект «A» в визуальной студии, я вижу A.dll, B.dll и C.dll в папке bin проекта «A».

Теперь я планировал объединить B.dll и C.dll внутри A.dll.

Я попытался использовать ниже команду ILMerge, но содержимое A.dll потеряно.

ilmerge /out:A.dll A.dll B.dll C.dll /targetplatform:v4 

Любая идея, как это можно достичь? Я wan't B и C слились в A без потери содержания A.

Спасибо.

+0

Попробуйте изменить аргумент D.dll. –

+0

@ Lexi: Да, я знаю это, но я не хочу новой сборки. – thinkmmk

+0

, то, вероятно, сначала переименуйте A в D, а затем слейте B, C, D в A. –

ответ

1

Рассмотрим, используя многостадийный процесс следующим образом, выполнив три команды:

1. создать временную сборку из 3-х входных узлов.

2. удалите исходную библиотеку.

3. переименовать временную сборку в libraryA.dll.

Пример:

3 команды, выполняемые на одной линии с помощью "&" сепаратор.

C:\<somepath>\Debug>"C:\<somepath>"\ILMerge.exe /out:temp.dll libraryA.dll libraryB.dll libraryC.dll /targetplatform:v4 & del /F /Q libraryA.dll & ren temp.dll libraryA.dll 

выход (если смотреть в ILSpy для удобства):

ILSpy showing code from multiple sources merged into single assembly

ВАЖНО: Вы должны рассмотреть следующие этот процесс только с версии релиза. Если выполнить отладочную сборку с файлами .pdb, переименование, выполненное на третьем шаге примера, лишит возможности отладки сборок. связанная информация о SO: here

ПРИМЕЧАНИЕ: Если ваше намерение поддерживать версию сборки оригинального сборки libraryA.dll в процессе вы будете нуждаться, чтобы получить больше творческого т.е. Source версию сборки, а затем передавая версию до /ver: версия аргумент ILMerge.exe. Если вы рассматриваете запуск ILMerge как событие postbuild, применимы следующие ссылки, связанные с получением версии.

SO: getting version in postbuild event

SO: getting version in commandline

Вызов ILMerge как postbuild обсуждается SO: here

Также отметим: Вопрос похожий на ваш обсуждался here без ответа, например, на основе.

Смежные вопросы