Visual Studio Macro: как форматировать XML-файлы? - PullRequest
2 голосов
/ 19 мая 2011

Я получил небольшой макрос-скрипт из Visual Studio Macro для форматирования всех файлов в решении , но, к сожалению, он не работает с xml, xaml, config и т. Д. Все ProjectItem на основе xml обычно выдает исключение (команда недоступна), когда они были открыты в их основном представлении vsViewKindPrimary:

Dim projectItem As ProjectItem ' actually this is a parameter of a sub'
Dim window As Window = projectItem.Open(Constants.vsViewKindPrimary)
window.Activate()
projectItem.Document.DTE.ExecuteCommand("Edit.FormatDocument")
window.Close(vsSaveChanges.vsSaveChangesYes) ' actually this is part of a finally block'

Результат:

System.Runtime.InteropServices.COMException (0x80004005): Command "Edit.FormatDocument" is not available.
 at EnvDTE.DTEClass.ExecuteCommand(String CommandName, String CommandArgs)

При открытии их в виде текста с помощью vsViewKindTextView они остаются без изменений, хотя Edit.FormatDocument может быть выполнен.

Есть ли другая команда, которая должна использоваться для файлов xml? Что-то не так с кодом?

1 Ответ

0 голосов
/ 09 апреля 2014

Я вижу ту же проблему, но у меня немного другое воспроизведение.Этот код работает для файлов .cpp, но не для файлов .xml:

EnvDTE.Solution soln = System.Activator.CreateInstance(
    Type.GetTypeFromProgID("VisualStudio.Solution.11.0")) as EnvDTE.Solution;

soln.DTE.ItemOperations.OpenFile(file);
soln.DTE.ExecuteCommand("Edit.FormatDocument");

Если я заменю последнюю строку на следующую, файл останется неизменным:

TextSelection selection = soln.DTE.ActiveDocument.Selection as TextSelection;
selection.SelectAll();
selection.SmartFormat();

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

...