2010-08-18 3 views
0

Мое дело: у меня есть app.exe и несколько dll для него - a.dll, b.dll, c.dll и т. Д. (Они исходят из единого решения VS, которое состоит из многих проектов). Я хотел бы объединить (ilmerge) все dlls в один, чтобы у меня было: app.exe + x.dll.Как объединить все DLL в одном для приложения?

Теперь возникает проблема - приложение ожидает наличия всех DLL, поэтому, когда я помещаю только один файл x.dll, он не будет запущен. Итак, как «перенаправить» приложение на использование одного x.dll - возможно ли вообще?

Единственное, что я знаю, это удаление всех ссылок на проекты в Visual Studio и добавление ссылки на объединенную dll. Но это приведет к отключению цепочки зависимостей при перекомпиляции решения.

КПП. Я не могу объединить exe и dll вместе, потому что это приложение wpf, и ilmerge не может его обработать.

ответ

3

Возможно, вместо создания 3 DLL вы могли бы создать 3. NetModules и превратить их в одну DLL. Для этого потребуется некоторое редактирование фактических файлов CSPROJ, поскольку создание .NetModules в настоящее время не интегрировано в систему MSBuild, но это можно сделать.

Вы можете представить .NetModule как своего рода статическую библиотеку в C/C++. Конечно, есть различия, но в целом концепция схожа. Они наиболее распространены при попытке создать единую DLL, содержащую несколько языков .NET, но они будут работать и для вас. Проверьте их here.

+0

спасибо. Поскольку мой проект не такой большой, а не для изучения MSBuild, я просто создал один большой проект с файлами из других проектов, добавленных в подкаталоги в качестве ссылок. Вид уродливый, но требует почти никаких ручных изменений, он быстрый, он работает :-) – greenoldman

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

  • Нет связанных вопросов^_^