我已经使用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文件是不好的做法。但是不明白为什么 - 有人可以照亮我吗?
答案 0 :(得分:28)
使用自定义配置文件搜索变通方法,我找到了这个解决方案。不知道是否是正确的。
问题是VS无法找到验证.config(xml)的架构。如果使用“本机”配置元素或创建自定义.config文件,则必须将每个xml文档设置为架构。
默认情况下(例如在VS9中)所有xml文件都使用\ Microsoft Visual Studio 9.0 \ Xml \ Schemas \ DotNetConfig.xsd 但是你可以添加更多的模式来使用。
在分配架构之前,您必须创建它。
根据您自己的custom.config创建新架构:
分配您的架构:
您可以指定任意数量的内容。或者为所有不同的自定义.config文件设置一个模式
(对不起,但我的英语不太好)
答案 1 :(得分:2)
我认为你得到了蓝色的波形,因为你的web.config文件的模式没有声明这些自定义配置部分你已经“分解”成单个文件。
在研究这个问题时,我发现我的一些解决方案存在同样的问题,但是微软提供的配置部分没有曲线。例如:我们已将appsettings和connectionstrings提取到他们自己的文件中,并且他们没有得到曲线,但是我们的自定义曲线。
我尝试在schemas.microsoft.com/.netconfiguration/v2.0上查看microsoft架构,但在尝试下载时我得到了404.
我想说的是,如果您获得MS架构的副本并将其更改为包含您的外部配置文件,您应该能够摆脱可怕的曲线!
HTH, 兰斯