【问题标题】:How to fix Error: "Could not find schema information for the attribute/element" by creating schema如何通过创建架构修复错误:“找不到属性/元素的架构信息”
【发布时间】:2011-07-15 06:42:15
【问题描述】:

我有一个用 C# 用 VS2010 编写的 Windows 窗体应用程序,在 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>

【问题讨论】:

  • 这看起来像是对这个问题的欺骗:stackoverflow.com/questions/179927/…。检查@user57433 的答案。
  • @rsbarro,EntLib配置工具和DotNetConfig.xsd文件在哪里?
  • 对不起,我没有意识到用户发布了两个问题的答案。我正在参考第二个答案。该答案虽然正确,但有点不清楚,因此在下面提供了更详细的答案。
  • 谢谢,rsbarro! StingyJack 最初的问题仅限于使用企业库配置部分的错误,而不仅仅是任何自定义配置部分。

标签: c# error-handling database-schema application-settings


【解决方案1】:

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

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

【讨论】:

  • 这在第一次尝试时可能不起作用。我需要做两次才能在 VS 2013 Express 中工作。
  • 可悲的是,VS2013 Ultimate 没有任何乐趣。
  • 在 Visual Studio 2015 中为我工作。如果有人能解释原因会很好。
  • 在 VS 2013 Professional 中对我不起作用。这种解决方法可能是最懒惰的,但它既不快速也不简单,仅仅因为它没有效果。
  • 没用,VS2015 更新 2,.NET 4.5.2。看起来它使消息消失了,但是如果您再次打开 XML 文件,它们就会回来。
【解决方案2】:

2015 年 9 月更新
这个答案继续得到支持,所以我将把它留在这里,因为它似乎对某些人有帮助,但请先查看@reexmonkey@Pressacco 的其他答案。它们可能会提供更好的结果。

原始答案
试一试:

  1. 在 Visual Studio 中,打开 app.config 或 web.config 文件。
  2. 转到“XML”菜单并选择“创建架构”。此操作应创建一个名为“app.xsd”或“web.xsd”的新文件。
  3. 将该文件保存到您的磁盘。
  4. 返回到您的 app.config 或 web.config 并在 编辑窗口 中,右键单击并选择属性。从那里,确保您刚刚生成的 xsd 在 Schemas 属性中被引用。如果它不存在然后添加它。

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

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

"C:\Program Files (x86)\Microsoft 视觉工作室 10.0\xml\Schemas\DotNetConfig.xsd" "Web.xsd"

【讨论】:

  • @rsbarro,感谢您的回复!为什么你有 2 个 xsd 文件?我创建了模式,并提出了 1 个文件 - app.xsd,我将其保存到根目录。错误消失了,但现在我收到警告:“全局元素'配置'已经被声明”。关于如何解决这个问题的任何想法?
  • 只需使用“属性”对话框选择您的架构或添加另一个架构。查看 app.config 时,右键单击编辑器窗口并选择属性。您应该在弹出的 Property Editor 控件中看到 Schemas。此外,如果您单击 Schemas 中的“...”按钮,它可以让您使用漂亮的 GUI 选择要用于配置文件的模式。
  • 谢谢。这行得通,但是有没有一个好地方我可以阅读以了解为什么会发生这种情况?在为 DotNetOpenAuth 添加大量内容然后从头开始重新生成 edmx 文件之后,似乎我突然需要为我的 web.config 生成一个模式。 “你改变了很多事情,所以有些事情被搞砸了”,这是有道理的。某种方式,但了解为什么 web.config 文件会自发需要架构会很有帮助。
  • 当您生成 Web.xsd 文件时,仅包含您在 web/app.config 部分(用户部分)中添加的架构。排除所有其他已经在默认架构中或其他 .xsd 包含的内容。
  • 不不不!!这不是“解决方案”,因为它甚至不是真正的问题。查看并投票支持@pressacco 的答案。 reexmonkey 的回答也有效。为什么这个答案会得到如此多的赞成票? 1. 直接忽略!关闭 app.config 或 web.config 并编译你甚至不会看到消息。 2.虽然不需要,但通过右键单击 .config 属性更正 VS 提供的 XSD 的路径来解决。 (@pressacco 的回答) 3. 或者:更改项目设置 DotNet 版本并返回。重复两次。 (reexmonkey 的回答)。可能会导致软件包更新出现问题。
【解决方案3】:

EntLib 5 中包含一个 XSD,它安装在 Visual Studio 架构目录中。就我而言,它可以在以下位置找到:

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

【讨论】:

  • 对不起,我可能遗漏了一些东西,“将路径添加到“EnterpriseLibrary.Configuration.xsd”的完全限定路径”是什么意思
  • 完全限定路径我的意思是:使用绝对路径。例如C:\Program Files (x86)\Microsoft Visual Studio 10.0\Xml\Schemas\EnterpriseLibrary.Configuration.xsd。在 Windows 操作系统上,相对路径可以包含 .\ 和 ..\ 字符。
  • 相关帖子可以在:link
  • Visual Studio 2015 中是否缺少 EnterpriseLibrary.Configuration.xsd?
  • 谢谢@Taegost,这也为我做了。 (我的问题,VS2013下的代码分析自定义字典,与所述略有不同,但症状相同)。我尝试过的其他任何方法都没有奏效,这让我发疯了。当我在编辑器中打开字典时,由于这些错误,代码分析工具似乎甚至没有使用它!
【解决方案4】:

我发现相关模块中存在语法错误并且它没有被编译——不过编译器并没有告诉我。只是给了我有关 app.config 内容的错误。 VS2010。一旦我修复了语法错误,一切都很好。

【讨论】:

    【解决方案5】:

    当您的项目引用过时的架构时会发生此错误。使用 Visual Studio 生成新的。

    在 Visual Studio 中,执行以下操作:

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

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

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

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

    【讨论】:

      【解决方案6】:

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

      在 Visual Studio 中,在设计模式下打开您的 RDLC 文件报告。单击报告,然后从顶部菜单中选择查看,然后选择报告数据。选择数据集,然后右键单击并从报告中删除数据集。下一步打开解决方案资源管理器,如果它尚未在您的 Visual Studio 中打开。找到 XSD 文件(它应该与您刚刚从报告中删除的数据集同名)。现在返回并再次右键单击报告数据 Datasets,然后选择 Add Dataset 。这将创建一个新的 XSD 文件并将数据集属性写入报告。现在您的错误消息将消失,所有丢失的数据现在都将显示在您的报告中。

      【讨论】:

        【解决方案7】:

        当这件事发生在我身上时(不知从何而来),我正要深入了解上面的最佳答案,然后我想我会关闭项目,关闭 Visual Studio,然后重新打开所有内容。问题解决了。 VS 错误?

        【讨论】:

        • 矫枉过正。在 VS 中关闭 App.config 文件编辑器就足够了。 VS 错误,也许吧。
        【解决方案8】:

        我在 VS 2012 中有这个,其中“部分名称”已在项目中更改,我通过删除项目中的“app.config”来修复它,然后在“解决方案资源管理器”中右键单击该项目,选择“属性”,然后选择“设置”,然后更改其中一项设置,保存并重新构建。这创建了一个包含正确信息的新 app.config。

        【讨论】:

          【解决方案9】:

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

          【讨论】:

            【解决方案10】:

            Pressacco 已经涵盖了我写的大部分内容,但这是特定于 SpecFlow 的。

            我收到了&lt;specFlow&gt; 元素的这条消息,因此我在解决方案this answer 中添加了一个specflow.xsd 文件(进行了一些修改以允许&lt;plugins&gt; 元素)。

            之后我(像 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"
            

            【讨论】:

              猜你喜欢
              • 2017-09-12
              • 1970-01-01
              • 1970-01-01
              • 2012-12-04
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-10-20
              相关资源
              最近更新 更多