如何通过创建模式修复错误: “无法找到属性/元素的模式信息”

我有一个用 C # 编写的 VS2010窗口表单应用程序,在 app.config文件中得到以下错误:

Message 4   Could not find schema information for the attribute 'name'
Message 8   Could not find schema information for the attribute 'name'
Message 12  Could not find schema information for the attribute 'name'
Message 5   Could not find schema information for the attribute 'serializeAs'
Message 15  Could not find schema information for the element 'CCP_Utility.Settings1'
Message 2   Could not find schema information for the element 'CCP_Utility.Properties.Settings'
Message 3   Could not find schema information for the element 'setting'
Message 1   Could not find schema information for the element 'userSettings'
Message 6   Could not find schema information for the element 'value'

要修复这个问题,我需要在代码中修改什么?在哪里可以编辑 CCP_Utility.Settings1CCP_Utility.Properties.Settings中的内容?

这是 app.config密码:

<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="CCP_Utility.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="CCP_Utility.Settings1" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<userSettings>
<CCP_Utility.Properties.Settings>
<setting name="SourceDir" serializeAs="String">
<value />
</setting>
<setting name="TargetDir" serializeAs="String">
<value />
</setting>
<setting name="CorpID" serializeAs="String">
<value />
</setting>
</CCP_Utility.Properties.Settings>
<CCP_Utility.Settings1>
<setting name="sourceDir" serializeAs="String">
<value />
</setting>
<setting name="targetDir" serializeAs="String">
<value />
</setting>
</CCP_Utility.Settings1>


</userSettings>
</configuration>
231950 次浏览

更新日期: 2015年9月
这个答案继续得到赞同票,因此我将把它留在这里,因为它似乎对一些人有帮助,但请先查看来自 @ reexMonkey@ Pressacco的其他答案。他们可能会提供更好的结果。

原始答案
试试这个:

  1. 在 Visual Studio 中,打开 app.config 或 web.config 文件。
  2. 转到“ XML”菜单并选择“ Create Schema”,这个操作应该创建一个名为“ app.xsd”或“ web.xsd”的新文件。
  3. 将该文件保存到磁盘。
  4. 返回到 app.config 或 web.config,在 编辑窗口中,右键单击并选择 properties。然后,确保刚才生成的 xsd 在 Schemas 属性中被引用。如果没有,那就加进去。

这应该会导致这些消息消失。

我将 web.xsd 保存在 web 文件夹的根目录中(这可能不是放置它的最佳位置,但仅用于演示目的) ,我的 Schemas 属性如下所示:

”C: Program Files (x86) Microsoft 视觉工作室 10.0 xml 模式 DotNetConfig.xsd”“ Web.xsd”

EntLib 5包含一个 XSD,并安装在 VisualStudio 架构目录中。就我而言,可以在以下网址找到:

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 文件时才可见。如果您“关闭所有文档”并编译... ... 将不会报告任何邮件。

解决问题最快最简单的方法:

  1. 右键单击解决方案资源管理器中的项目图标并选择“属性”。
  2. 转到“ Application”选项卡并选择早期的.NET 目标框架。
  3. 保存更改。
  4. 转到“ Application”选项卡并选择初始的.NET 目标框架。
  5. 保存更改 = > 问题解决!

我发现在相关的模块中有一个语法错误,它没有编译——编译器没有告诉我这一点。只是给了我一个关于 app.config 的错误。VS2010.一旦我修复了语法错误,一切都很好。

我所写的大部分内容已经被 Pressacco 涵盖,但是这是专门针对 SpecFlow 的。

我得到了 <specFlow>元素的这条消息,因此我向解决方案 这个答案添加了一个 specflow.xsd文件(对 <plugins>元素做了一些修改)。

然后,我(像 Pressacco 一样)在 app.config的文件缓冲区和选择的属性中右键单击,在 Schemas中,我将 "specflow.xsd"添加到末尾。Schemas全文如下:

"C:\Program Files (x86)\Microsoft Visual Studio 12.0\xml\Schemas\1033\DotNetConfig.xsd" "C:\Program Files (x86)\Microsoft Visual Studio 12.0\xml\Schemas\EntityFrameworkConfig_6_1_0.xsd" "C:\Program Files (x86)\Microsoft Visual Studio 12.0\xml\Schemas\RazorCustomSchema.xsd" "specflow.xsd"

简单: 在 VisualStudio 报表设计器中
1. 在设计模式下打开报表并从 RDLC 文件中删除数据集
2. 打开解决方案资源管理器并删除实际的(损坏的) XSD 文件
3. 将数据集添加回 RDLC 文件。
4. 上述过程将创建新的 XSD 文件。
5. 更详细的内容见下文。

在 VisualStudio 中,以设计模式打开 RDLC 文件报表。单击报表,然后从顶行菜单中选择“视图”,再选择“报表数据”。选择“数据集”,然后右击并从报表中删除数据集。如果 VisualStudio 中尚未打开,则下一个打开的解决方案资源管理器。找到 XSD 文件(它应该与刚从报表中删除的数据集同名)。现在返回并再次右键单击报表数据数据集,然后选择 AddDataset。这将创建一个新的 XSD 文件并将数据集属性写入报表。现在您的错误消息将消失,任何丢失的数据将出现在您的报告中。

当这种情况发生在我身上时(不知从哪儿冒出来的) ,我正准备钻研上面的顶级答案,然后我想我应该关闭这个项目,关闭 Visual Studio,然后重新打开所有的东西。问题解决了。VS 窃听器?

我在 VS 2012中有过这样的情况,在一个项目中“ Section name”被更改了,我通过删除项目中的“ app.config”来修复它,然后在“ Solution Explorer”中右键单击项目,选择“ Properties”,然后选择“ Settings”,然后对其中一个设置进行更改,保存并重新构建。这样就创建了一个带有正确信息的新 app.config。

当项目引用过期架构时发生此错误。请使用 VisualStudio 生成新架构。

在 VisualStudio 中,执行下列操作:

  1. 打开 app.configweb.config文件。
  2. 转到 XML菜单并选择 Create Schema

这将触发 app#.xsd(Windows 应用程序)或 web#.xsd(网站)文件生成。

  1. 将新生成的 xsd 文件保存到项目的根目录。
    • 打开 App.configweb.config文件,在文本编辑器中右键单击并选择属性,然后单击 Schemas 值旁边的 ...按钮。
    • 使用 Add按钮添加新生成的 xsd 文件。
    • OK

现在应该解决 找不到属性/元素的架构信息错误。

在我的例子中,我的代码中有一个模棱两可的引用。我重新启动了 VisualStudio 并能够看到错误消息。当我解决这个问题时,另一个错误消失了。