Как реализовать условную компиляцию XAML с помощью MSBuild и XSLT?C#

Место общения программистов C#
Ответить
Anonymous
 Как реализовать условную компиляцию XAML с помощью MSBuild и XSLT?

Сообщение Anonymous »

По этому вопросу я хочу условно включать/исключать элементы XAML во время сборки на основе директив препроцессора, аналогично тому, как #if/#else работает в C#. Я пробовал использовать XSLT для преобразования XAML, но он не работает должным образом.
Чего я пытаюсь достичь
Я определяю препроцессор константы в моем .csproj:

Код: Выделить всё

DEBUG;TRACE;fix_issue_001

Затем в XAML я хочу условно включить элементы на основе этих констант: Моя попытка решения
Вот мой XSLT (Transform.xslt): А вот моя интеграция с MSBuild (XamlPreprocess.targets):


$(IntermediateOutputPath)PreprocessedXaml\
$(MSBuildThisFileDirectory)Transform.xslt





























Проблема
Преобразование XSLT, похоже, не дает никакого эффекта — обе кнопки отображаются в конечном приложении, независимо от того, исправлено ли fix_issue_001 определено или нет. Я ожидаю увидеть только кнопку «Исходная версия», если fix_issue_001 определена, и только кнопку «Новая версия», если это не так.
Изображение

Требования
  • < li>Обязательно работать с Visual Studio 2019.
  • Должен сохраняться функционал дизайнера XAML.
  • Не следует постоянно изменять исходные файлы.
  • В идеале. интегрирован с процессом MSBuild
Вопрос
  • Почему мое преобразование XSLT не работает ?
  • Есть ли лучший подход для достижения условная компиляция XAML?


Подробнее здесь: https://stackoverflow.com/questions/792 ... d-and-xslt
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»