如何解决错误:通过创建架构,“找不到属性/元素的架构信息”


148

我有一个用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 2011年

@ rsbarro,EntLib配置工具和DotNetConfig.xsd文件位于哪里?
Brian McCarthy

抱歉,我没有意识到用户发布了该问题的两个答案。我指的是第二个答案。该答案虽然正确,但还不清楚,因此下面提供了更详细的答案。
rsbarro 2011年

1
谢谢,rsbarro!StingyJack最初的问题仅限于使用企业库配置部分的错误,而不仅仅是任何自定义配置部分。
丽莎

Answers:


169

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

原始答案
试一下:

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

那应该导致那些消息消失。

我将web.xsd保存在Web文件夹的根目录中(该文件夹可能不是放置它的最佳位置,而只是出于演示目的),并且Schemas属性如下所示:

“ C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ xml \ Schemas \ DotNetConfig.xsd”“ Web.xsd”


10
@rsbarro,谢谢您的回复!为什么有2个XSD文件?我创建了架构,并只提出了一个文件app.xsd,并将其保存到根目录中。错误消失了,但是现在我得到警告:“已声明全局元素'configuration'。关于如何解决这个问题的任何想法?
Brian McCarthy

2
只需使用“属性”对话框来选择您的架构或添加另一个架构。查看app.config时,在编辑器窗口中右键单击并选择“属性”。您应该在弹出的“属性编辑器”控件中看到“架构”。另外,如果您单击架构中的“ ...”按钮,则可以使用漂亮的GUI选择要用于配置文件的架构。
rsbarro 2011年

3
谢谢。这行得通,但是我可以阅读一个好地方来了解为什么会发生这种情况吗?在为DotNetOpenAuth添加大量内容然后从头开始重新生成edmx文件之后,似乎突然需要为我的web.config生成架构。“您改变了很多东西,所以有些东西眨了眨眼”就很有意义。这样的方式,但是了解为什么web.config文件会自发地需要一个模式会有所帮助。
froggythefrog2013年

6
生成Web.xsd文件时,仅包括在web / app.config部分(用户部分)中添加的架构。排除默认模式中已经存在的所有其他文件或其他包含的.xsd。
Pagotti

10
不不不!!这不是“解决方案”,因为它甚至不是真正的问题。查看并投票给@pressacco的答案。reexmonkey的答案也有效。为什么这个答案获得这么多的赞成票?1.简单地忽略!关闭app.config或web.config并进行编译,您甚至都不会看到消息。2.尽管不需要,但是通过右键单击.config属性来解决,以更正VS提供的XSD的路径。(@pressacco的答案)3.或:更改项目设置DotNet版本并返回。重复两次。(reexmonkey的答案)。可能会导致软件包更新出现问题。
pashute

217

解决问题的最快捷,最轻松的方法:

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

11
甜!在VS2012为我工作。
2013年

4
也为我工作(VS2013 Premium)。
雷姆科2014年

5
第一次尝试可能不起作用。在VS 2013 Express中运行之前,我需要做两次。
H2ONaCl 2014年

24
在Visual Studio 2015中为我工作。如果有人可以解释原因,那就太好了。
乔纳森·伍德

6
无效,VS2015更新2,.NET 4.5.2。看起来它使消息消失了,但是如果您再次简单地打开XML文件,它们就会回来。
史努比

21

XSD包含在EntLib 5中,并安装在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文件时可见。如果您“关闭所有文档”并编译...,则不会报告任何消息。


1
完全限定路径是指:使用绝对路径。例如C:\Program Files (x86)\Microsoft Visual Studio 10.0\Xml\Schemas\EnterpriseLibrary.Configuration.xsd。在Windows操作系统上,相对路径可以包含。\和.. \字符。
Pressacco 2012年

1
感谢您提供有关关闭XML文件以删除警告的信息。)奇怪的行为(
Machtyn 2015年

8
Visual Studio 2015中缺少EnterpriseLibrary.Configuration.xsd吗?
路加福音

3
只需关闭XML文件,这个问题对我来说就
不复存在

1
谢谢@Taegost,这对我也有帮助。(我的问题是VS2013下的代码分析自定义词典,与说明的略有不同,但症状相同)。我没有其他尝试过的方法,这让我发疯。当我在编辑器中打开字典时,由于这些错误,似乎代码分析工具甚至没有使用它!
sn00gan

1

我发现相关模块中存在语法错误,并且没有进行编译-编译器没有告诉我。只是给了我关于app.config东西的错误。VS2010。一旦我修复了语法错误,一切都很好。


1

当您的项目引用过时的架构时,会发生此错误。使用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

该属性/元素找不到架构信息错误(S)现在应该可以解决。


1

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

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


0

当这发生在我身上(无处不在)时,我将深入研究上面的首要问题,然后我想到我将关闭项目,关闭Visual Studio,然后重新打开所有内容。问题解决了。VS bug?


过度杀伤力。在VS中关闭App.config文件编辑器就足够了。VS bug,也许。
Jirka Hanika

0

在VS 2012中,我在项目中更改了“ Section name”,然后在项目中删除“ app.config”,然后在“ Solution Explorer”中右键单击项目,选择“属性”,然后是“设置”,然后更改其中一项设置,保存并重新构建。这使用正确的信息创建了一个新的app.config。


0

就我而言,我的代码中有一个含糊的引用。我重新启动了Visual Studio,并能够看到错误消息。当我解决此问题时,其他错误消失了。


-1

我写的大部分内容都已被Pressacco涵盖,但这是SpecFlow特有的。

我收到该<specFlow>元素的消息,因此specflow.xsd向解决方案中添加了此答案的文件(进行了一些修改以允许该<plugins>元素)。

之后,我(如Pr​​essacco),在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"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.