修复:全局元素“configuration”已经被声明

81

我使用了如何解决元素/属性<xxx>的模式信息找不到的问题?中的第二种解决方案。

换句话说,我使用“创建方案”的按钮创建了一个XSD。我将app.config中的样式表更改为app.xsd,但现在我收到以下警告:

全局元素“configuration”在app.xsd中已经被声明。

即使更改名称,也会显示此警告。有没有人有解决办法?

11个回答

200

我尝试重启无效,所以我想分享一下有效的解决方法。

首先,我刚刚升级到Windows 8,此问题在升级前并不存在。而且,这个问题只出现在一个app.config文件中。所以我决定将有问题的app.config与正常的进行比较。在Visual Studio中,打开app.config,在“Xml-> Schemas”中,我注意到好的配置只有三个选项被勾选,而坏的配置有相同的三个选项以及一个DotNetConfig.xsd。当我将DotNetConfig.xsd的“Use”列更改为自动时,问题就解决了。

enter image description here

enter image description here


6
对我而言,这是DotNetConfig.xsd文件。我想知道是否因为更改了.NET构建版本,因为我也注意到了一个DotNetConfig45文件。 - Adam
8
如果您在选择其他行之前点击“确定”,它将无法识别更改。 - AaronLS
2
问题已解决。谢谢。 - Vetras
6
这并没有帮助我。无论我选择什么,"不使用"、"自动"或者"删除",都会被选中DotNetConfig40.xsd和DotNetConfig.xsd。我尝试了在做完选择后确保选择了另一行。最后,我不得不将DotNetConfig.xsd的名称改为"DotNetConfig DO NOT USE.xsd"以防止其加载。 - Charles Oppermann
1
我打开了app.config并注意到了一条信息。接着,我进入了XML >> Schemas >> 我发现了DotNetConfig.xsd和DotNetConfig45.xsd。我将DotNetConfig.xsd的[Use]更改为自动模式。重新启动了Visual Studio 2017,问题得以解决。 - juFo
显示剩余6条评论

39

我之前也遇到过跟你提到的问题,按照下面的步骤操作就可以了。首先要确保 EnterpriseLibrary.Configuration.xsd 文件在 %ProgramFiles%\Microsoft Visual Studio [version]\Xml\Schemas\ 目录下,然后按照以下步骤进行:

Enterprise Library 会在 Visual Studio 中安装一个模式(schema),以便在 Visual Studio 的 XML 编辑器中为编辑 Enterprise Library 配置文件提供 IntelliSense®。您必须在使用之前启用此模式。

启用 Enterprise Library 配置模式

  1. 通过在“解决方案资源管理器”中双击配置文件,在 Visual Studio 中打开配置文件。
  1. 在“XML”菜单上,单击“模式”以打开“XML 模式”对话框。
  1. 找到名为 EnterpriseLibrary.Configuration.xsd 的模式。此模式将自动安装。但是,如果没有显示在列表中,请单击“添加”,然后转到文件夹 %Program Files%\Microsoft Visual Studio [version] \Xml\Schemas,选择 EnterpriseLibrary.Configuration.xsd 文件并单击“打开”。
  1. 将“使用”列中的值更改为“使用此模式”,然后单击“确定”。

文章链接在 这里,希望对你有所帮助。


谢谢,然而我现在无法再次复现这个问题了。当我重新启动电脑(我很少这样做)后,警告已经消失了,所以我现在无法确定你的解决方案是否有效。但是既然你提供了一个解决方案,我还是给它点了赞。 - Michel Keijzers
9
在我的情况下,使用 Visual Studio 2013 并按照问题描述的方式,机器上没有 EnterpriseLibrary.Configuration.xsd。 - Charles Oppermann
7
这至少让我找对了方向——在VS 2015中加载了VS 2013的模式。将它们设置为自动,错误就消失了。 - Peter T. LaComb Jr.
6
我也有同样的问题,@PeterLaCombJr。我将所有“Use”更改为“Automatic”,错误消失了,VS 2017再次正确验证我的app.config并给我智能感知功能。 - ahwm
最终对我起作用的是删除如下所述的.suo文件。 - George Birbilis

35

我的问题是我从.Net 4.5转到了.Net 4.0。为了解决这个问题,我将所有选中的模式切换为自动。


4
您可以在 app.config 文件的属性窗口中找到模式。点击“模式”椭圆按钮,并将每个勾选项替换为下拉菜单中的“自动”。 - RobCroll
1
我尝试逐个删除有问题的模式,但它总是会重新出现。只有当我将所有模式设置为自动时,我想要消失的模式才真正离开了。 - Daniel Gimenez

26

我也曾经为此苦恼了一段时间。事实证明,我的问题版本源自于Visual Studio创建的隐藏{PROJECTNAME}.SUO文件。

我的猜测是,VS将在此文件中缓存XSD模式关联。这些警告在我更改目标框架后弹出,而在删除SUO文件并重新启动VS后消失。


3
我也遇到了与VS 2017 RC类似的问题,这个方法同样有效。谢谢! - TrtlBoy
6
可以。在我的情况下,该文件位于{solution}/.vs/{project}/v14/.suo。 - Yan F.
2
这在实际发布的VS 2017版本中也有效! - user3092503
谢谢,这个修复是永久性的(将.xsd文件重命名为_.xsd也起作用)。顺便说一句,删除.suo文件会导致DotNetConfig.xsd文件被删除,并从列表中移除DotNetConfig45.xsd文件(在问题出现之前,已将MVC5应用程序[最近从MVC4转换]以及一些控制台应用程序和库从4.5转换为4.7.2)。 - George Birbilis
顺便提一下,正如我在 https://zoomicon.wordpress.com/2019/04/04/fix-the-global-element-xx-has-already-been-declared-warnings-in-config-files-after-net-framework-upgrade-in-visual-studio-solution/ 中所提到的,我刚刚发现了一个没有文件名部分的“.suo”文件,只有文件扩展名,并将其删除。 - George Birbilis

13

针对问题描述的症状,使用 Visual Studio 2013(更新4),我在 XML 模式 对话框中看到选择了 DotNetConfig.xsdDotNetConfig40.xsd

我正在使用 .NET Framework 4.0 项目。

这两个 XSD 文件互相冲突,每个文件都定义了相同的元素,导致发出警告。

这些模式文件包含在 %programfiles(x86)%\Microsoft Visual Studio 12.0\xml\Schemas\ 文件夹中。

DotNetConfig.xsd 位于 1033 子文件夹中,似乎是较新且更完整的版本。

无论我在 XML 模式中选择什么设置,都无法取消选择或删除 DotNetConfig40DotNetConfig。我尝试了“删除”、将 Use 参数从“使用此模式”更改为“自动”,然后再更改为“不使用此模式”。

无论选择哪个文件,在返回对话框时,两者都会被选中以供使用。我还尝试了在按下“确定”之前移动到另一行的技巧,但都没有成功。

最后,我将 DotNetConfig40.xsd 文件重命名为 DotNetConfig40 DO NOT USE.xsd 以防止其被加载。这立即解决了问题。

我不满意必须这样做,并担心它会对其他项目产生不良影响。我将更新此帖子并公布结果。


1
我在使用GUI时也没有成功,我将1033\子文件夹中的通用DotNetConfig.xsd重命名,这立即解决了我的问题。 - Brunis
2
谢谢,那个方法可行,不过删除 .suo 文件似乎是最好的解决方案。这样可以保留 DotNetConfig.xsd 在模式列表中(在我从 4.5 转换到 4.7.2 后删除了 DotNetConfig45.xsd)。 - George Birbilis

6
这个问题在我关闭引起警告的编辑器文件并重新编译后得到了解决。

5
我注意到我在使用VS2017时出现了这个问题。 将DotNetConfig.xsd更改为“Automatic”可以解决该问题。 enter image description here

3
似乎这个不会永久有效(仅仅有一次短暂地对我有效过)。删除.suo文件,然后重新打开即可。 - George Birbilis

4

重新启动系统后,问题得到解决,这意味着我不再收到与计划相关的任何警告。

因此,看起来重新启动(可能还包括一些隐式的恢复/重置)已经消除了警告。


4

我发现有很多重复的XML模式,所以我只是简单地将与Visual Studio 2017无关的所有模式标记为不使用。问题立即消失了。


4
使用Visual Studio 2015 Community Edition - 在项目的根文件夹中生成一个web.xsd并将其添加到模式列表中,可以清除所有警告,除了一个:

全局元素'configuration'已经被声明。

关闭文本编辑器中的web.config文件并重新构建项目即可消除此警告。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接