web.config,configSource和“'xxx'元素未声明为”警告

时间:2010-05-14 09:58:42

标签: asp.net xml visual-studio web-config

我已经使用configSource属性将可怕的笨拙web.config文件分解为某些部分(例如connectionStrings,身份验证,页面等)的单个文件。

这样可以正常工作,但是包含“snippets”部分的各个xml文件会在VS中引发警告。

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

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

但是我在VS中的roleManager元素下得到了蓝色波形,并出现以下警告:The 'roleManager' element is not declared

我想这与有效的xml和模式等有关。有没有一种简单的方法可以解决这个问题?我可以添加到单个文件中的东西吗?

由于

P.S。我听说像这样打破web.config文件是不好的做法。但是不明白为什么 - 有人可以照亮我吗?

2 个答案:

答案 0 :(得分:28)

使用自定义配置文件搜索变通方法,我找到了这个解决方案。不知道是否是正确的。

问题是VS无法找到验证.config(xml)的架构。如果使用“本机”配置元素或创建自定义.config文件,则必须将每个xml文档设置为架构。

默认情况下(例如在VS9中)所有xml文件都使用\ Microsoft Visual Studio 9.0 \ Xml \ Schemas \ DotNetConfig.xsd 但是你可以添加更多的模式来使用。

在分配架构之前,您必须创建它。

根据您自己的custom.config创建新架构:

  1. 打开自定义配置文件
  2. in menubar XML-&gt; Create Schema
  3. 保存
  4. 分配您的架构:

    1. 打开自定义配置文件
    2. 属性面板中的
    3. :单击浏览按钮[..]
    4. 将“使用”列设置为最近创建的架构
    5. 您可以指定任意数量的内容。或者为所有不同的自定义.config文件设置一个模式

      (对不起,但我的英语不太好)

答案 1 :(得分:2)

我认为你得到了蓝色的波形,因为你的web.config文件的模式没有声明这些自定义配置部分你已经“分解”成单个文件。

在研究这个问题时,我发现我的一些解决方案存在同样的问题,但是微软提供的配置部分没有曲线。例如:我们已将appsettings和connectionstrings提取到他们自己的文件中,并且他们没有得到曲线,但是我们的自定义曲线。

我尝试在schemas.microsoft.com/.netconfiguration/v2.0上查看microsoft架构,但在尝试下载时我得到了404.

我想说的是,如果您获得MS架构的副本并将其更改为包含您的外部配置文件,您应该能够摆脱可怕的曲线!

HTH, 兰斯