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

Я пытался использовать ILMerge в своем проекте на основе WPF (VS2010, Net4.0), но я не смог запустить объединенный исполняемый файл.Итак, я создал два очень простых проекта

  • просто консольное приложение, которое печатает Hello World
  • wpf-приложение, которое показывает окно с меткой hello world

При компиляции каждого проекта я получаю один исполняемый файл (поэтому объединение, на самом деле ничего не объединяет, это просто для проверки).Каждый исполняемый файл работает, конечно.

Затем я «объединяю» каждый исполняемый файл следующим образом:

"C:\Program Files\Microsoft\ILMerge\ilmerge" 
    /targetplatform:v4,c:\Windows\Microsoft.NET\Framework\v4.0.30319 
    /lib:c:\Windows\Microsoft.NET\Framework\v4.0.30319\wpf 
    /out:Merged.exe MyApplication.exe

(я сделал вызов многострочным только для удобства чтения SO).Хорошо, теперь консольное приложение объединено и работает так же хорошо, как и раньше, приложение wpf объединено без каких-либо ошибок, но я не могу его запустить.Я имею в виду, что я набираю

Merged.exe

Панель задач мигает, но ничего не появляется - ни окна, ни ошибки, ничего.

Так как мне объединить приложение WPF?

Ответы [ 2 ]

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

Из того, что я знаю (и испытал), ilmerge работает некорректно с сборками WPF, в которые встроены ресурсы xaml.

В этом вопросе приведены некоторые возможные решения / альтернативы

1 голос
/ 17 декабря 2017

Если я правильно понимаю, вы хотите встроить все сборки в один exe.

Существует замечательный пакет NuGet под названием Costura.Fody . Слияние сборок не может быть проще!

Если вам нужно объединить Resource DLL, вам повезло! Существует еще один NuGet, расширяющий Costura.Fody, который называется Resource.Embedder !

.
...