有没有办法在 Visual Studio 中关闭任意区域的自动格式化?
我已将自动格式设置为完全按照我喜欢的方式缩进。但是,对于特定区域(特别是与创建 XML 文档有关的区域),我希望缩进清楚地表明正在创建的 XML 文档的结构,而不是创建它的 C#。例如:
// Format this normally.
public void WriteXMLDocument() {
// ...
using (XmlWriter x = XmlWriter.Create(filename)) {
// Create XML document
#region dont-format-this // <-- Any way to get VS to recognize something like this?
x.WriteStartDocument();
x.WriteStartElement("RootElement");
x.WriteStartElement("ChildElement1");
x.WriteStartElement("GrandchildElement1a");
x.WriteElementString("GreatGrandchildElement1a1");
x.WriteElementString("GreatGrandchildElement1a2");
x.WriteEndElement();
x.WriteElementString("GrandchildElement1b");
x.WriteEndElement();
x.WriteStartElement("ChildElement2");
x.WriteEndElement();
x.WriteEndElement();
x.WriteEndDocument();
#endregion
}
}
显然我不希望 Visual Studio 猜测如何格式化我正在做的事情,但我宁愿它只是不在这个区域内尝试。否则每次我编辑一行时,VS 都会变得雄心勃勃并试图撤消我的工作。
最佳答案
据我所知,在 Visual Studio 中的同一个文件中没有具有不同行为的功能,Resharper 只有一个功能请求才能准确添加此功能。但这还没有得到解决,afaik 也没有提到 Resharper 可用。
我会有另一个穷人的解决方案,它也支持您试图遵循的意图,以捆绑具有相同深度的风格的陈述。您可以添加 {} 括号来将逻辑上包含在您正在执行的操作中的内容括起来。所以形成会留下来。
潜在的缺点(如果你这样看的话)是因为括号你有更多的行:
using (XmlWriter x = XmlWriter.Create(filename)) {
// Create XML document
#region dont-format-this // <-- Any way to get VS to recognize something like this?
x.WriteStartDocument();
{
x.WriteStartElement("RootElement");
{
x.WriteStartElement("ChildElement1");
{
x.WriteStartElement("GrandchildElement1a");
{
x.WriteElementString("GreatGrandchildElement1a1");
x.WriteElementString("GreatGrandchildElement1a2");
}
x.WriteEndElement();
x.WriteElementString("GrandchildElement1b");
}
x.WriteEndElement();
}
x.WriteStartElement("ChildElement2");
x.WriteEndElement();
}
x.WriteEndElement();
x.WriteEndDocument();
}
#endregion
}
这仅解决 OP 问题以保持示例问题的缩进。它并没有像@Noseratio 要求的那样禁用文件的某些部分。
https://stackoverflow.com/questions/19407495/