13

Visual Studio에서 임의의 영역에 대한 자동 서식을 해제하는 방법이 있습니까?Visual Studio에서 #region의 자동 서식 기능을 해제합니다. 201x

필자는 원하는대로 들여 쓰도록 자동 서식을 설정했습니다. 그러나 특정 지역 (특히 XML 문서 작성과 관련된 작업)의 경우 들여 쓰기를 작성한 C#보다는 작성중인 XML 문서의 구조를 명확하게 들여 쓰기하고 싶습니다. 예를 들어 :

// 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가 야심 차게 내 작업을 실행 취소하려고합니다.

+0

매우 가난한 사람의 해결책 : var x___x = x; var x_______x = x; x ___ x.WriteStartElement ("ChildElement1"); 등 ... –

+0

@ ralf.w. 정말 어색하지만, 나는 그것이 작동한다는 것을 인정한다 ... – Tenner

답변

8

내가 아는 한 Visual Studio에서 같은 파일 내에서 다른 동작을하는 기능이 없으며 Resharper가 정확히이 기능을 추가하기위한 기능 요청 만 있습니다. 그러나 아직 afaik와 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 

    } 

이 주소 만 예제 문제의 들여 쓰기를 유지하는 영업 질문 :

잠재적 인 단점 (당신이 그것을 이런 식으로 표시되는 경우는) 당신이 있기 때문에 괄호 더 라인을 가지고있다. @Noseratio가 묻는 것은 파일의 일부분을 비활성화하는 것이 아닙니다.

+0

니스와 건방진 : P – Bimal

4

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