XamlCombine


Для Fluent-а и ряда других проектов я написал небольшую утилиту для объединения нескольких xaml-овых Resource Dictionary в один большой xaml.
Данная утилита:
  1. считывает список словарей, которые надо объединить из файла;
  2. загружает ресурсы из этих словарей;
  3. собирает список используемых namespace-ов и удаляет повторяющиеся;
  4. сортирует загруженные ресурсы в порядке их использования (т.е. первыми окажутся те ресурсы, которые будут использоваться последующими);
  5. заменяет DynamicResource на StaticResource;
  6. сохраняет полученный словарь ресурсов в файл.

Командная строка, для работы с утилитой:
XamlCombine.exe list-of-xamls.txt result-xaml.xaml
Где:
  • list-of-xamls.txt - текстовый файл содержащий список xaml-овых словарей, которые необходимо объеденить,
  • result-xaml.xaml - имя результирующего xaml файла.

Я предпочёл использовать один большой xaml, а не набор смерженых (merged), потому что:
  1. при использовании одного xaml-а увеличивается скорость загрузки приложения и уменьшается кол-во занимаемой памяти;
  2. в едином xaml-е можно использовать StaticResource заместо DynamicResource, что также даёт прирост производительности;
  3. нет проблем с Generic.xaml для библиотек с lookless контролами.

В ближайшее время планируется:
  • ввести возможность отключения замены DynamicResource на StaticResource;
  • ввести возможность отключения сортировки ресурсов;
  • ввести поддержку включения merged словарей (в данной версии они удаляются).

Страница проекта на CodePlex-е.

КОММЕНТАРИИ


James
James 13.09.2013 21:08:08 #1
Too many coiltmmenps too little space, thanks!

НОВЫЙ КОММЕНТАРИЙ


*жирный*
_курсив_
+подчеркнутый+
! заголовок 1
!! заголовок 2
* список
** список 2
# нумерованый список
## нумерованый список 2
[url:http://www.example.com]
{"без форматирования"}
Полное описание синтаксиса