Visual Studio宏:如何格式化xml文件?

时间:2011-05-19 17:25:12

标签: xml visual-studio-2008 formatting visual-studio-macros envdte

我从Visual Studio Macro to Format all Files in a Solution派生了一个小的宏脚本,但不幸的是它不适用于xml,xaml,config等。所有基于xml的ProjectItem通常会抛出异常(命令不可用)当他们在主视图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 :(得分:0)

我看到了同样的问题,但有一个稍微不同的重复。此代码适用于.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();

我已经尝试了一段时间但找不到解决办法。