Pull to refresh
7
0
Максим Паначёв @Lumilest

Системный архитектор

Send message

WPF Applications Deployment: объединение .NET сборок в одном исполняемом файле

Reading time4 min
Views7K
Когда требуется объединить несколько управляемых сборок в одном файле, можно воспользоваться утилитой ILMerge:

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-ресурсам, однако этого не происходит.

К счастью есть другой способ: разместить файлы сборок внутри объединённой в качестве встроенных ресурсов.
Читать дальше →

Information

Rating
Does not participate
Location
Екатеринбург, Свердловская обл., Россия
Date of birth
Registered
Activity