C# 无法加载设置文件。它可能已损坏、包含无效XML或包含重复的标识符

C# 无法加载设置文件。它可能已损坏、包含无效XML或包含重复的标识符,c#,xml,asp.net-mvc,visual-studio-2012,C#,Xml,Asp.net Mvc,Visual Studio 2012,我正在尝试打开我的项目设置XMl 为了给它添加一些可配置的对 但我得到了这个错误: Unable to load settings file. It might be corrupted or contain invalid XML or contain duplicate identifiers. 但是,我的XML非常精简: <?xml version='1.0' encoding='utf-8'?> <SettingsFile xmlns="http://schemas

我正在尝试打开我的项目设置XMl

为了给它添加一些可配置的对

但我得到了这个错误:

Unable to load settings file.  It might be corrupted or contain invalid XML or contain duplicate identifiers.
但是,我的XML非常精简:

<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="Conduit.Mam.MaMDBEntityFramework.Properties" GeneratedClassAppName="Settings">
  <Profiles />
  <Settings>
    <Setting AppName="SavedSuccessfullyInDB" Type="System.String" Scope="Application">
      <Value Profile="(Default)">The Test saved in DB successfully</Value>
    </Setting>
  </Settings>
</SettingsFile>

测试已成功保存在DB中

您的XML声明使用单引号。我想应该是双引号。可能值得一试。

您的XML声明使用单引号。我想应该是双引号。可能值得一试。

设置文件节点的属性应该是“GeneratedClassName”而不是“GeneratedClassAppName”。同样,“设置”节点上的属性“AppName”应该是“Name”

在我的例子中,我认为原因是Resharper过于激进的重构。

SettingsFile节点的属性应该是“GeneratedClassName”而不是“GeneratedClassAppName”。同样,“设置”节点上的属性“AppName”应该是“Name”

在我的例子中,我认为原因是Resharper的重构过于激进。

我也有这个错误(“无法加载设置文件。它可能已损坏或包含无效的XML或包含重复的标识符”),这也是Resharper重构的结果。经过一点研究,这是我的解决方案:

  • 关闭Visual Studio
  • 导航到项目
    属性
    目录
  • 删除
    Settings.Settings
    Settings.Designer.cs
  • 启动Visual Studio并打开项目
  • 添加新设置(属性->设置)
  • 这种方法的优点在于,Visual Studio将读取你的app/web.config,并注意到你已经有了条目,并且会自动为你添加这些键/值。

    我也有此错误(“无法加载设置文件。它可能已损坏或包含无效的XML或重复的标识符。”)这也是resharper重构的结果。经过一点研究,这是我的解决方案:

  • 关闭Visual Studio
  • 导航到项目
    属性
    目录
  • 删除
    Settings.Settings
    Settings.Designer.cs
  • 启动Visual Studio并打开项目
  • 添加新设置(属性->设置)

  • 这种方法的妙处在于,Visual Studio将阅读您的app/web.config,并注意到您已经有了条目,并将自动为您添加这些键/值。

    我的app.config中的这个简单的区分大小写问题导致了我的问题

      <setting Name="BlankPrescriberNoWhenWelshFormInGroup" serializeAs="String">
        <value>2</value>
      </setting>
    
    
    2.
    
    这需要是“name”而不是“name”

      <setting name="BlankPrescriberNoWhenWelshFormInGroup" serializeAs="String">
        <value>2</value>
      </setting>
    
    
    2.
    
    不过注意,我以前在为输入大写字母“S”时也遇到过这种情况

    <Setting name="value" serializeAs="String">
    
    
    
    在我的app.config中,而不是在

    <setting name="value" serializeAs="String"> 
    
    
    
    所以区分大小写可以让你在这里小心!还有一个要注意,大写字母为“V”

    <Value>2</Value> 
    
    2
    
    当它真的只喜欢“v”的时候

    <value>2</value>
    
    2
    
    我的app.config中的这个简单的区分大小写问题导致了这个问题

      <setting Name="BlankPrescriberNoWhenWelshFormInGroup" serializeAs="String">
        <value>2</value>
      </setting>
    
    
    2.
    
    这需要是“name”而不是“name”

      <setting name="BlankPrescriberNoWhenWelshFormInGroup" serializeAs="String">
        <value>2</value>
      </setting>
    
    
    2.
    
    不过注意,我以前在为输入大写字母“S”时也遇到过这种情况

    <Setting name="value" serializeAs="String">
    
    
    
    在我的app.config中,而不是在

    <setting name="value" serializeAs="String"> 
    
    
    
    所以区分大小写可以让你在这里小心!还有一个要注意,大写字母为“V”

    <Value>2</Value> 
    
    2
    
    当它真的只喜欢“v”的时候

    <value>2</value>
    
    2
    
    您是否有可以发布的异常堆栈跟踪?这是VS-2012编辑器中的一个错误?您是否有可以发布的异常堆栈跟踪?这是VS-2012编辑器中的一个错误。Ori发现并删除了隐藏在AppData中的user.config文件。对我来说,路径是:C:\Users\Matt\AppData\Local\TestApp\TestApp.exe\u Url\u m5ounderdbmxak2b1kdampbaq1fx54wc\1.0.0\user.config。然后我能够重新启动。我确实有一个损坏的文件-一堆空字符。我找到并删除了隐藏在AppData中的user.config文件。对我来说,路径是:C:\Users\Matt\AppData\Local\TestApp\TestApp.exe\u Url\u m5ounderdbmxak2b1kdampbaq1fx54wc\1.0.0\user.config。然后我能够重新启动。我确实有一个损坏的文件-一堆空字符。