我从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文件的命令?代码有问题吗?
答案 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();
我已经尝试了一段时间但找不到解决办法。