簡體   English   中英

在 Visual Studio 201x 中關閉 #region 的自動格式化

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM