13

Gibt es eine Möglichkeit, automatische Formatierung für beliebige Regionen in Visual Studio zu deaktivieren?Automatische Formatierung für eine # Region in Visual Studio 201x deaktivieren

Ich habe automatische Formatierung eingestellt, um genau wie ich mag einzurücken. Für eine bestimmte Region (insbesondere eine, die mit dem Erstellen eines XML-Dokuments zu tun hat) möchte ich jedoch, dass die Einrückung die Struktur des zu erstellenden XML-Dokuments und nicht das C#, das es erstellt, klarstellt. Zum Beispiel:

// 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 

    } 
} 

Offensichtlich erwarte ich nicht, Visual Studio zu erraten, wie zu formatieren, was ich tue, aber ich würde lieber versuche es einfach nicht in dieser Region. Ansonsten wird VS jedes Mal, wenn ich eine Zeile bearbeite, ehrgeizig und versucht, meine Arbeit rückgängig zu machen.

+0

sehr armer Mann Lösung: var x___x = x; var x_______x = x; x ___ x.WriteStartElement ("KindElement1"); usw. ... –

+0

@ ralf.w. Wirklich peinlich, aber ich gebe zu, es funktioniert ... – Tenner

Antwort

8

Soweit ich weiß, gibt es kein Feature in Visual Studio, das ein anderes Verhalten in derselben Datei hat, und es gibt nur eine Feature-Anforderung für Resharper, genau das hinzuzufügen. Aber das wurde noch nicht angesprochen afaik und Resharper wurde nicht erwähnt, um verfügbar zu sein.
Ich würde die Lösung eines anderen armen Mannes haben, die auch die Absicht unterstützt, der Sie folgen, um Aussagen der gleichen Tiefe im Stil zu bündeln. Sie können {} -Hinweise hinzufügen, um Dinge einzufügen, die logisch in dem liegen, was Sie tun. So würde die Formatierung bleiben.

möglicher Nachteil (wenn man es so sehen) ist Sie mehr Linien haben wegen der Klammern:

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 

    } 

Diese nur Adressen, die OP Frage der Vertiefung des Beispiels Problem zu halten. Es deaktiviert nicht Teile der Datei als was @Noseratio fragt.

+0

Schön und frech: P – Bimal

4

Wie @Uwe bereits gesagt hat, gibt es in VS keine Möglichkeit, das zu tun. Dies wird nur als eine Arbeit angeboten, keine Antwort auf die ursprüngliche Frage. Dadurch wird die Formatierung beibehalten und Sie können die XML-Struktur visuell wie gewünscht anzeigen.

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()); 
} 
Verwandte Themen