Когда требуется объединить несколько управляемых сборок в одном файле, можно воспользоваться утилитой ILMerge:
В данном примере из двух сборок будет создан объединённый исполняемый файл. Атрибут /t:winexe указывает на то, что результатом будет оконное (WinForms) приложение.
Однако, с приложениями WPF утилита ILMerge работать не умеет. Это связано с особенностями компиляции XAML-файлов, использующихся в архитектуре WPF для декларативного описания структуры, поведения и анимации пользовательского интерфейса:
При объединении подобных сборок ILMerge следовало бы исправить все URI доступа к BAML-ресурсам, однако этого не происходит.
К счастью есть другой способ: разместить файлы сборок внутри объединённой в качестве встроенных ресурсов.
ILMerge.exe /t:winexe /out:test.exe test1.exe test2.dll
В данном примере из двух сборок будет создан объединённый исполняемый файл. Атрибут /t:winexe указывает на то, что результатом будет оконное (WinForms) приложение.
Однако, с приложениями WPF утилита ILMerge работать не умеет. Это связано с особенностями компиляции XAML-файлов, использующихся в архитектуре WPF для декларативного описания структуры, поведения и анимации пользовательского интерфейса:
- XAML-файл компилируется в BAML-код (аналог IL), который затем размещается в ресурсах сборки.
- С помощью объявлений пространства имён XML XAML-файл может ссылаться на другие сборки.
- XAML-файлы могут ссылаться друг на друга используя, к примеру, такие элементы, как объединённые словари ресурсов и фреймы.
При объединении подобных сборок ILMerge следовало бы исправить все URI доступа к BAML-ресурсам, однако этого не происходит.
К счастью есть другой способ: разместить файлы сборок внутри объединённой в качестве встроенных ресурсов.