Dot-Net

如何解決“找不到元素/屬性 <xxx> 的架構資訊”?

  • October 7, 2008

在 Visual Studio 中,我有一個使用 MS Enterprise Library 4.0 應用程序塊的 asp.net 3.5 項目​​。

當我打開我的 web 配置文件時,我的錯誤列表充滿了 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 文件,它們就會消失(但只要我需要再次打開文件,它們就會回來)。

經過一番查看,我發現這是因為缺少 Visual Studio 需要的 XSD 或架構文件,以便正確“理解”web.config 文件中的架構並為其提供智能感知。

有誰知道如何為 VS 提供適當的模式資訊,或者關閉這些消息?

@Franci - 感謝您提供資訊,我已經嘗試過該工具以及 MMC 管理單元(它們往往會破壞 Web.config 中的格式),但它們仍然無法解決我收到的惱人警告。感謝您的嘗試。

app.config使用 EntLib 配置工具進行了配置並設置了我的LoggingConfiguration塊。然後我把這個複製到DotNetConfig.xsd. 當然,它並不涵蓋所有屬性,僅涵蓋我添加的屬性,但它不再顯示那些煩人的資訊消息。

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

我已經根據我目前的 app.config 創建了一個新方案,以使消息消失。我剛剛使用了 Visual Studio 中顯示“創建架構”的按鈕,並為我創建了一個 xsd 架構。

將架構保存在適當的位置,然後查看 app.config 文件的“屬性”選項卡,其中有一個名為 Schemas 的屬性。如果點擊此處的更改按鈕,您可以選擇同時使用原始 dotnetconfig 架構和您自己新創建的架構。

引用自:https://stackoverflow.com/questions/179927