[英]Turn off auto-formatting for a #region in Visual Studio 201x
有沒有辦法關閉 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只有一個功能請求才能准確添加。 但是尚未解決這個問題,並且沒有提到Resharper可用。
我會有另一個窮人的解決方案,它也支持你試圖遵循相同深度的語句捆綁語句的意圖。 您可以添加{} -brackets來包含邏輯上屬於您正在執行的操作的內容。 因此,格式化將保持不變。
潛在的缺點(如果你這樣看)是由於括號你有更多的線:
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要求。
正如@Uwe已經說過,VS無法做到這一點。 這只是作為一種解決方法提供的,而不是原始問題的答案。 這將保持格式化,讓您可以根據需要直觀地看到xml結構。
var settings = new XmlWriterSettings();
settings.Indent = true;
settings.OmitXmlDeclaration = true;
settings.ConformanceLevel = ConformanceLevel.Auto;
using (XmlWriter x = XmlWriter.Create(filename, settings))
{
var xml = @"
<RootElement>
<ChildElement1>
<GrandchildElement1a>
<GreatGrandchildElement1a1></GreatGrandchildElement1a1>
<GreatGrandchildElement1a2></GreatGrandchildElement1a2>
</GrandchildElement1a>
</ChildElement1>
<ChildElement2>
</ChildElement2>
</RootElement>
";
XDocument doc = XDocument.Parse(xml);
x.WriteRaw(doc.ToString());
}
我已經驗證了 Visual Studio 2019 Professional 16.11.5 的以下內容。
#pragma warning disable IDE0055
// Discard formatting in this region
#pragma warning restore IDE0055
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.