Я пишу код, который используется как в WPF, так и в Silverlight. В C# я могу использовать "#if SILVERLIGHT"
для условной компиляции, и он работает.Унифицированный XAML для WPF и Silverlight с использованием T4?
В XAML, однако, я должен использовать совершенно разные файлы XAML, так как некоторые атрибуты просто несовместимы. Файлы XAML на 99% похожи, а синхронизация - это хлопот.
Я хотел бы, чтобы преобразовать их в шаблон Т4, так что я могу сделать что-то вроде:
<SomeControl <#=ClipsToBounds()#> />
Где ClipsToBounds()
производит разный текст для WPF и Silverlight. Требования:
- Intellisense при работе на шаблоны XAML
- сгенерированных во время сборки
- Проект должен быть самодостаточными и работа на фондовом версии Visual Studio: устанавливает различных SDKs и 3-редакторов партии не являются приемлемым
- Результаты запуска шаблона НЕ должны находиться в контроле источника. -
я обнаружил, что я могу изменить custom tool
на файл XAML из MSBuild:Compile to TextTemplatingFileGenerator
и я не теряю Intellisense. Однако полученные шаблоны генерируются во время разработки. Чтобы потом сгенерировать во время сборки, кажется большой болью.
У кого-нибудь есть опыт работы с подобными настройками?
Не используется переносная библиотека классов? –
Портативные библиотеки классов решают проблему совместного использования кода, отличного от UI, они должны хорошо подходить для уровня ViewModel, если использовать MVVM, а не представление. –