Как объединить все библиотеки в один для приложения? - PullRequest
0 голосов
/ 18 августа 2010

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

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

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

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

Ответы [ 2 ]

3 голосов
/ 18 августа 2010

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

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

0 голосов
/ 20 мая 2011

Я рекомендую, если вы прочитаете этот блог.Это альтернатива ILMerge, когда вам нужно объединить сборки WPF.http://blogs.msdn.com/b/microsoft_press/archive/2010/02/03/jeffrey-richter-excerpt-2-from-clr-via-c-third-edition.aspx

...