Работа с XSLT в Visual Studio - PullRequest
       32

Работа с XSLT в Visual Studio

8 голосов
/ 22 октября 2009

В своем клиентском приложении на C # я использую XSLT для преобразования XML в HTML.

Я хотел бы иметь возможность редактировать эти файлы без необходимости перекомпиляции всего решения. У меня проблемы с разработкой Visual Studio 2008, чтобы разрешить это.

Проблема в том, что файлы XSLT должны как-то копироваться в выходной каталог. В настоящее время это происходит в процессе сборки. (Для моих файлов XSLT установлено значение «копировать, если новее».) Процесс сборки может занять несколько минут, что кажется чрезмерным из-за небольших изменений в HTML.

Я мог бы внести изменения XSLT в сам каталог вывода, но каталог вывода не находится под контролем исходного кода. Я случайно стер несколько быстрых правок, создав свое решение.

Я бы хотел сократить время цикла отладки XSLT, сохранив мои XSLT-файлы под контролем исходного кода и предотвращая случайные перезаписи.

Сводка ответов: Похоже, что наиболее практичный подход к решению этой проблемы - учитывая, что Visual Studio не имеет хорошего способа сделать это из коробки - это создать отдельный проект, который содержит файлы содержимого. Эти файлы копируются в выходную папку при сборке проекта. Таким образом, мне не нужно компилировать все решение, только один проект со всей статической информацией, такой как XSLT, CSS, изображения и т. Д.

Несколько человек предложили использовать инструменты для синхронизации или пакетного копирования, но, хотя это будет работать лично для меня, настройка его для других членов команды также была бы большой дополнительной работой.

Ответы [ 9 ]

5 голосов
/ 09 декабря 2009

Мне не совсем понятен ваш вопрос, но вы можете указать Visual Studio копировать файл из решения в выходную папку каждый раз, когда вы создаете.

Позвольте мне попытаться понять ваш сценарий:

  • У вас есть XSLT-файлы, зарегистрированные в системе контроля версий вместе с вашим кодом C #. Например, если ваш проект находится в папке с именем MyProj, файлы XSLT находятся в папке MyProj / Templates
  • Вы хотите иметь возможность редактировать файлы xslt в папке «Шаблоны» и отправлять эти изменения в систему контроля версий так же, как вы делаете это с .cs или другими файлами в вашем проекте.
  • Вам нужна копия ваших файлов xslt в папке bin / Debug или bin / Release вместе с исполняемым файлом.

В этом случае добавьте файлы XSLT в проект Visual Studio. Затем щелкните их правой кнопкой мыши, откройте «Свойства» и установите «Build Action» = «Содержимое» и «Копировать в выходной каталог» = «Всегда». Всякий раз, когда вы строите свой проект, последняя копия файлов XSLT будет помещаться в каталог bin / Debug или bin / Release.

3 голосов
/ 14 декабря 2009

Очевидно, вы управляете двумя проблемами в одном проекте. Первая проблема связана с вашей бизнес-логикой (создание XSLT-преобразования, вызов его для преобразования некоторого содержимого XML, вывод результата HTML ...). Второе беспокойство - это сама трансформация.

Так почему бы не создать отдельный проект для ваших листов xslt? «Создание» этого проекта будет состоять из копирования листов в выходную папку. Изменение xslt не повлияет на другой проект, поэтому сократит время сборки.

Разделение проблем на уровне проекта, то есть:)

3 голосов
/ 22 октября 2009

Один из подходов заключается в том, чтобы включить директиву препроцессора C # , чтобы указывать мою функцию загрузки XSLT на каталог решений в режиме отладки, но на выходной каталог при сборке выпуска.

Что-то вроде:

string viewFolder = AppDomain.CurrentDomain.BaseDirectory;

#if DEBUG
// Move up from /bin/debug
viewFolder = viewFolder + @"..\..\";
#endif

Но это похоже на взлом.

2 голосов
/ 14 декабря 2009
  1. Создайте командный файл, который копирует ваши xslt из контролируемого им источника во все каталоги bin (bin / debug bin / release или любые другие, которые вы определили)
  2. Добавьте пакетный файл как Внешний инструмент , дополнительно назначив нажатие клавиши (или аккорд) для выполнения пакетного файла
  3. Отредактируйте, запустите инструмент (я бы назначил нажатие клавиши, чтобы сделать это проще), затем проверьте вашу веб-страницу.
2 голосов
/ 13 декабря 2009

Одним из решений, которое может работать для вас, является установка соединения с вашим Templates в выходной папке. Это позволит вам использовать XSLT напрямую, не копируя их в выходную папку. Хорошая идея - обеспечить (создать) соединение как действие сборки.

Необходимые условия:

  • NTFS
  • Инструмент для создания соединений (например, junction )
2 голосов
/ 22 октября 2009

Вы можете редактировать файл прямо в выходной папке.

С другой стороны, многие люди не знают, что в VS встроены богатые инструменты для отладки xslts.

http://msdn.microsoft.com/en-us/library/ms255605(VS.80).aspx

0 голосов
/ 24 декабря 2013

Я понимаю, что это старый пост, но я нашел другое решение в основном той же проблемы.

Visual Studio позволяет «связывать» файлы.

Щелкните правой кнопкой мыши папку в решении, в которой вы хотите разместить ссылку на файл.

Нажмите

'Добавить'

'Существующий элемент ..'

(выберите файл)

Перейдите в раскрывающееся меню «Добавить» и выберите «Добавить как ссылку»

0 голосов
/ 14 декабря 2009

У меня точно такая же проблема. Я купил программу под названием ViceVersa (http://www.tgrmn.com/)), в которой я настроил профили синхронизации так, чтобы мои папки css, layout и xslt синхронизировались с моей машины на моем dev-сервере, как только были внесены какие-либо изменения. Если я сделаю любой код меняется, тогда я просто публикую как обычно.

0 голосов
/ 14 декабря 2009

Не могли бы вы использовать программу для синхронизации файлов (например, Microsoft SyncToy"- бесплатное приложение, которое синхронизирует файлы и папки между папками") для копирования файлов? Это позволит вам избежать шага «копировать при сборке», поскольку файлы автоматически копируются после сохранения. Кроме того, если вы отредактировали их в выходном каталоге, изменения можно было бы скопировать обратно в каталог с исходным кодом. Не самая лучшая программа синхронизации в реальном времени для этого сценария, но это может быть другой вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...