"요소/속성 <xxx>에 대한 스키마 정보를 찾을 수 없습니다"를 해결하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/179927

문제

Visual Studio에는 MS Enterprise Library 4.0 응용 프로그램 블록을 사용하는 asp.net 3.5 프로젝트가 있습니다.

웹 구성 파일을 열면 오류 목록이 다음과 같은 메시지가 포함된 99개 메시지로 채워집니다.

Could not find schema information for the element 'dataConfiguration'.  
Could not find schema information for the attribute 'defaultDatabase'.  
Could not find schema information for the element 'loggingConfiguration'.   
Could not find schema information for the attribute 'tracingEnabled'.   
Could not find schema information for the attribute 'defaultCategory'.  

Web.config 파일을 닫으면 해당 파일은 사라지지만 파일을 다시 열어야 하는 즉시 다시 나타납니다.

몇 가지 조사 결과 web.config 파일에 있는 스키마를 적절하게 '이해'하고 이에 대한 intellisense를 제공하기 위해 Visual Studio에 필요한 XSD 또는 스키마 파일이 없기 때문에 이것이 발생한다는 것을 발견했습니다.

VS에 적절한 스키마 정보를 제공하거나 이러한 메시지를 끄는 방법을 아는 사람이 있습니까?

@Franci - 정보 주셔서 감사합니다. 해당 도구와 MMC 스냅인을 사용해 보았지만(Web.config의 형식이 깨지는 경향이 있음) 여전히 수신되는 짜증나는 경고를 해결하지 못했습니다.시도해 주셔서 감사합니다.

도움이 되었습니까?

해결책

나는 그것을 구성했다 app.config Entlib 구성 도구를 사용하여 LoggingConfiguration 차단하다. 그런 다음 이것을 DotNetConfig.xsd. 물론 모든 속성을 다루지는 않지만 추가 한 속성 만 포함하지만 더 이상 성가신 정보 메시지를 표시하지는 않습니다.

<xs:element name="loggingConfiguration">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="listeners">
        <xs:complexType>
          <xs:sequence>
            <xs:element maxOccurs="unbounded" name="add">
              <xs:complexType>
                <xs:attribute name="fileName" type="xs:string" use="required" />
                <xs:attribute name="footer" type="xs:string" use="required" />
                <xs:attribute name="formatter" type="xs:string" use="required" />
                <xs:attribute name="header" type="xs:string" use="required" />
                <xs:attribute name="rollFileExistsBehavior" type="xs:string" use="required" />
                <xs:attribute name="rollInterval" type="xs:string" use="required" />
                <xs:attribute name="rollSizeKB" type="xs:unsignedByte" use="required" />
                <xs:attribute name="timeStampPattern" type="xs:string" use="required" />
                <xs:attribute name="listenerDataType" type="xs:string" use="required" />
                <xs:attribute name="traceOutputOptions" type="xs:string" use="required" />
                <xs:attribute name="filter" type="xs:string" use="required" />
                <xs:attribute name="type" type="xs:string" use="required" />
                <xs:attribute name="name" type="xs:string" use="required" />
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="formatters">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="add">
              <xs:complexType>
                <xs:attribute name="template" type="xs:string" use="required" />
                <xs:attribute name="type" type="xs:string" use="required" />
                <xs:attribute name="name" type="xs:string" use="required" />
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="logFilters">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="add">
              <xs:complexType>
                <xs:attribute name="enabled" type="xs:boolean" use="required" />
                <xs:attribute name="type" type="xs:string" use="required" />
                <xs:attribute name="name" type="xs:string" use="required" />
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="categorySources">
        <xs:complexType>
          <xs:sequence>
            <xs:element maxOccurs="unbounded" name="add">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="listeners">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="add">
                          <xs:complexType>
                            <xs:attribute name="name" type="xs:string" use="required" />
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="switchValue" type="xs:string" use="required" />
                <xs:attribute name="name" type="xs:string" use="required" />
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="specialSources">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="allEvents">
              <xs:complexType>
                <xs:attribute name="switchValue" type="xs:string" use="required" />
                <xs:attribute name="name" type="xs:string" use="required" />
              </xs:complexType>
            </xs:element>
            <xs:element name="notProcessed">
              <xs:complexType>
                <xs:attribute name="switchValue" type="xs:string" use="required" />
                <xs:attribute name="name" type="xs:string" use="required" />
              </xs:complexType>
            </xs:element>
            <xs:element name="errors">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="listeners">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="add">
                          <xs:complexType>
                            <xs:attribute name="name" type="xs:string" use="required" />
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="switchValue" type="xs:string" use="required" />
                <xs:attribute name="name" type="xs:string" use="required" />
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="name" type="xs:string" use="required" />
    <xs:attribute name="tracingEnabled" type="xs:boolean" use="required" />
    <xs:attribute name="defaultCategory" type="xs:string" use="required" />
    <xs:attribute name="logWarningsWhenNoCategoriesMatch" type="xs:boolean" use="required" />
  </xs:complexType>
</xs:element>

다른 팁

현재 app.config를 기반으로 새로운 체계를 만들어 메시지가 사라지도록했습니다. 방금 "스키마 만들기"라는 Visual Studio의 버튼을 사용했으며 XSD 스키마가 만들어졌습니다.

스키마를 적절한 장소에 저장하고 schemas라는 속성이있는 app.config 파일의 "속성"탭을 참조하십시오. 변경 버튼을 클릭하면 원래 DotNetConfig 스키마와 새로 만든 자신의 스키마를 모두 사용하도록 선택할 수 있습니다.

XSD는 Entlib 5에 포함되어 있으며 Visual Studio Schema 디렉토리에 설치되어 있습니다. 제 경우에는 다음에서 찾을 수 있습니다.

"C : Program Files (x86) Microsoft Visual Studio 10.0 xml schemas Enterpriselibrary.configuration.xsd"

문맥

  • Visual Studio 2010
  • 엔터프라이즈 도서관 5

경고를 제거하기위한 단계

  1. Visual Studio 프로젝트에서 App.Config를 열십시오
  2. XML 문서 편집기를 마우스 오른쪽 버튼으로 클릭하고 "속성"을 선택하십시오.
  3. "Enterpriselibrary.configuration.xsd"에 자격을 갖춘 경로를 추가하십시오.

곁에

이러한 "오류 목록" "메시지"( "요소에 대한 스키마 정보를 찾을 수 없음")는 app.config 파일을 열 때만 볼 수 있다는 것을 반복 할 가치가 있습니다. "모든 문서를 닫고 컴파일하는 경우 ... 메시지가보고되지 않습니다.

VS용 XML 스키마 캐싱 폴더에 스키마 파일을 복사해 보셨나요?VS 도구/옵션/테스트 편집기/XML/기타를 보면 해당 폴더의 위치를 ​​찾을 수 있습니다.안타깝게도 MS Enterprise Library 4.0용 스키마 파일이 어디에 있는지 모르겠습니다.

업데이트:MS Enterprise Library를 설치한 후 .xsd 파일이 없는 것 같습니다.그러나 구성 파일을 편집하는 데 사용할 수 있는 구성 편집 도구인 EntLibConfig.exe가 있습니다.또한 구성 파일에 적절한 구성 섹션을 추가하면 VS가 구성 파일을 올바르게 구문 분석할 수 있어야 합니다.(EntLibConfig가 이를 추가하거나 사용자가 직접 추가할 수 있습니다).다음은 loginConfiguration 섹션의 예입니다.

<configSections>
    <section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</configSections>

또한 프로젝트의 적절한 어셈블리에 대한 참조를 추가해야 합니다.

"요소에 대한 스키마 정보를 찾을 수 없음"을 고정했습니다.

  • app.config.
  • 편집기 창을 마우스 오른쪽 버튼으로 클릭하고 선택하십시오 Properties.
  • 속성 상자에는 Schemas, 나는 그 행을 클릭하고 찾아보기를 선택했습니다 ... 행에 나타나는 상자.
  • 나는 단순히 확인했다 use 내 프로젝트가 어딘가에있는 모든 행과 현재 사용중인 .NET의 현재 버전에 대한 상자. 예를 들어: DotNetConfig30.xsd.

그 후 모든 것이 잘 작동했습니다.

내 프로젝트가없는 스키마 행이 어떻게 확인되지 않았는지 잘 모르겠지만, 그들이 확인했는지 확인했을 때 나는 사업을 시작했습니다.

이것으로 탐색하십시오 : NLOG XSD 파일

프로젝트에 적합한 XSD를 다운로드하고 NLOG.Config를 따라 저장하십시오.

첫 번째는 나를 위해 트릭을했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top