2010-05-14 72 views
22

我已經將可怕笨重的web.config文件分解爲一些部分的單個文件(例如connectionStrings,認證,頁面等)使用configSource屬性。web.config,configSource和「'xxx'元素沒有聲明」警告

這工作正常,但個別xml文件,包含部分'片段'導致VS中的警告。

例如,用於角色管理器部分名爲roleManager.config文件,如下所示:

<roleManager enabled="false"> 
</rolemanager> 

但是我在VS的roleManager元素得到一個藍色的波浪曲線,而下面的警告:The 'roleManager' element is not declared

我想這是有用的XML和模式等。有沒有一種簡單的方法來解決這個問題?我可以添加到單個文件的東西?

感謝

附:我聽說,打破這個web.config文件是不好的做法。但不明白爲什麼 - 任何人都可以照亮我?

+5

我不明白爲什麼它可以是不好的做法。要知道,改變這些.config文件將不會導致Web應用程序的重新啓動(例如,如果你編輯的web.config文件本身) – Timores 2010-05-14 10:03:26

+0

並沒有意識到 - 感謝,好知道。 – UpTheCreek 2010-05-14 10:10:00

+0

一個有關使用configSource屬性好處是,如果你有過給別人將它放在他們公司的服務器內,他們可以很容易地看到,他們需要在web配置改一下手你的代碼(的ConnectionStrings,等...)爲他們的環境。 – 2010-05-14 19:51:08

回答

2

我認爲你會得到藍色的波浪曲線,因爲你的web.config文件的模式沒有聲明這些自定義的配置部分,你已經'打破'成單個文件。

在研究中,我發現我的一些解決方案有相同的問題,但是從Microsoft提供的配置部分不包含波形。例如:我們已經將appsettings和連接字符串提取到他們自己的文件中,並且他們沒有弄錯,但是我們自定義的。

我試圖在schemas.microsoft.com/.netconfiguration/v2.0上查看微軟架構,但在嘗試下載時收到404。

我想說的是,如果你得到一個MS架構的副本,並將其改爲包含你的外部配置文件,你應該能夠擺脫可怕的扭曲!

HTH, 蘭斯

+0

謝謝你,我會研究一下。我注意到一些類似的東西沒有引起問題。看來,我認爲部分,它們直接的<結構>(根)元件下沒有問題(例如,的ConnectionStrings),而是一個水平向下從根(如roleManager的那些,這是下<配置>確實有問題。 – UpTheCreek 2010-05-14 10:31:32

26

搜索的解決方法,使用自定義配置文件這件事情,我發現了這個解決方案。不知道是否是正確的。

問題是VS無法找到一個模式來驗證您的.config(xml)。如果您使用「本機」配置元素或創建自定義.config文件,則必須爲每個xml文檔設置一個模式。

默認情況下(例如在VS9中)所有xml文件都使用\ Microsoft Visual Studio 9.0 \ Xml \ Schemas \ DotNetConfig.xsd ,但您可以添加更多模式以供使用。

在分配模式之前,您必須先創建它。

根據您自己的習慣創建新的架構。配置:

  1. 打開菜單欄XML的自定義配置文件
  2. >創建模式
  3. 將它保存

要分配架構:

  1. 打開自定義配置文件
  2. 在屬性面板:點擊瀏覽按鈕[..]
  3. 「使用」欄設置爲您最近創建的模式

你可以分配儘可能多的你想要的。或者對所有不同的自定義.config文件

一個模式(抱歉,我的英語不太好)

+3

工作正常。順便說一句,VS2012會自動將新創建的模式分配給你的XML文件模式的列表。 – 2013-10-28 20:18:31

+0

這也擺脫了在我的web.config的ASMX SOAP項目報備奇怪的架構錯誤的。 – 2016-06-23 18:09:14

+0

要指定您的架構在2015年VS,頂部菜單/ XML /模式... /添加...然後選擇在第一步生成的XSD文件。 – hkutluay 2016-11-30 13:13:57