Вставить BAML в сборку без WPF

Я хотел бы встроить скомпилированный XAML в сборку как BAML2006.

Если выбрано действие Embedded Resource MSBuild, файл XAML внедряется в сборку как текстовый ресурс, который можно прочитать, как любой другой свободный ресурс XAML. Тем не менее, свободный XAML имеет некоторые серьезные ограничения, когда дело доходит до ссылочных пространств имен, наиболее вредно для любого пространства имен, на которое ссылается его [XmlnsDefinitionAttribute] должен быть загружен в AppDomain до разбора свободного XAML. Напротив, встроенный BAML от этого не страдает, так как сборка, содержащая пространство имен, добавляется в список сборок, на которые есть ссылки, и загружается AppDomain автоматически, прежде чем любой код начинает работать.

Если выбрана задача Page MSBuild, XAML "компилируется" в BAML2006 и внедряется в .resources.g содержащей сборки. Однако компиляция не удастся, если WindowsBase, PresentationCode а также PresentationFramework сборки не имеют ссылок. Поскольку я работаю над проектом, который использует XAML, но не WPF (мы загружаем графы объектов с XamlObjectWriter и пользовательские расширения разметки, но повторно использовать Visual Studio, часть инфраструктуры редактора XAML для поддержки IntelliSense), я бы хотел избежать зависимости от этих библиотек.

Есть ли способ заставить MSBuild встраивать BAML и добавлять необходимые ссылки на сборки, не зависящие от WPF?

Я предполагаю, что Workflow Foundation использует аналогичный подход, но я не смог найти никакой информации.

0 ответов

Другие вопросы по тегам