Как указать «Custom Tool» для преобразования файла в VS2010? - PullRequest
7 голосов
/ 19 января 2011

Окно Свойства в VS2010 для большинства типов файлов (например, .cs, .xml, .xslt) позволяет указать пользовательский инструмент для преобразования файлов. Для справки вот подсказка, которую можно получить при выборе поля «Пользовательский инструмент».

Указывает инструмент, который преобразует файл во время разработки и помещает Выход этого преобразования в другой файл. Например, набор данных (.xsd) файл поставляется по умолчанию пользовательский инструмент.

Я ищу информацию о том, как установить и использовать это свойство.

Вот проблема, которую я пытаюсь решить. Я преобразовываю и XML-файл, применяя XSLT. Я использую объекты расширения во время преобразования, как описано здесь .

При этом я сделал Visual Studio бесполезным в качестве инструмента для редактирования и отладки моего XSLT. Я надеюсь, что смогу написать простой механизм преобразования, который позволит нам использовать Visual Studio, как мы это делаем для документов XSLT, которые не используют объекты расширения. Я думаю (надеюсь), что свойство Custom Tool является ключом к выполнению этой работы.

ТИА

Ответы [ 3 ]

2 голосов
/ 19 января 2011

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

Просто используйте этот конструктор XslCompiledTransform перегрузка .

Параметры enableDebug Тип: System.Boolean true для генерации отладочной информации;иначе ложно.Если для этого параметра установлено значение true, вы можете отлаживать таблицу стилей с помощью отладчика Microsoft Visual Studio.

Замечания

Чтобы выполнить вход в код и отладить таблицу стилей, должны выполняться следующие условия:

Для параметра enableDebug установлено значение true.

  • Таблица стилей передается методу Load либо в виде URI, либо в виде реализации XmlReader класс, который реализует интерфейс IXmlLineInfo.Интерфейс IXmlLineInfo реализован для всех объектов разбора текста XmlReader.

    Другими словами, если таблица стилей загружается с использованием объекта IXPathNavigable, такого как XmlDocument или XPathDocumentили в реализации XmlReader, которая не реализует интерфейс IXmlLineInfo, вы не можете отлаживать таблицу стилей.

  • XmlResolver, используемый для загрузки таблицы стилей, - это файл-на основе XmlResolver, например XmlUrlResolver (по умолчанию XmlResolver используется классом XslCompiledTransform).

  • Таблица стилей находится на локальном компьютере илив интрасети.

Вот небольшой пример кода :

// Enable XSLT debugging.
XslCompiledTransform xslt = new XslCompiledTransform(true);

// Load the style sheet.
xslt.Load("output.xsl");

// Create the writer.
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent=true;
XmlWriter writer = XmlWriter.Create("output.xml", settings);

// Execute the transformation.
xslt.Transform("books.xml", writer);
writer.Close();
1 голос
/ 19 января 2011

До 2010 года в свойстве «Custom Tool» указывалось имя класса, который был зарегистрирован в VS как инструмент обработки, который будет принимать значение элемента проекта и создавать дополнительные файлы. Чтобы это работало, вам нужно было написать класс инструмента, скомпилировать его в сборку и зарегистрировать эту сборку в Visual Studio. Пример этого процесса можно найти здесь , но обратите внимание, что он не предназначен специально для VS 2010 и может сломаться - пользовательские инструменты основаны на объектной модели COM для VS, , очевидно, .

Я не уверен, насколько хорошо поддерживается эта функция в VS 2010. Я не видел (очевидной) документации по написанию этих инструментов в VS 2010 SDK *1008* и в этом посте в блоге по Visual Studio , по-видимому, обсуждает эту функцию (в разделе «Пользовательские инструменты сборки») или аналогичную, но я никогда не видел ни одного интерфейса, описанного в моей копии VS 2010 года.

В любом случае, если вы просто пытаетесь запустить некоторые вещи через командную строку, вам может быть лучше просто отредактировать MSBuild вашего .csproj, чтобы использовать <Exec> task - если вы действительно хотите собрать пользовательский инструмент, моя первая ссылка должна, по крайней мере, помочь вам начать работу.

1 голос
/ 19 января 2011

Обходной путь для отладки файлов XSLT, использующих объекты расширения, состоит в создании тестового файла проекта .exe (например, проекта консольного приложения) и вызове XSLT (со всеми ссылками на объекты расширения, на которые правильно ссылаются) из этого проекта.

Вы можете установить точки останова, а затем «Начать отладку» тестового проекта .exe, чтобы перейти в файл XSLT.

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