c#错误:无法识别配置部分userSettings - 停止程序读取user.config?

dan*_*nts 17 c# app-config user.config

在我的c#表单应用程序(在VS2010中使用.NET 4.0创建)中,我使用应用程序设置来存储输出路径.

以前,此设置配置了用户范围,但我必须将其范围更改为应用程序.

执行此操作后,我现在在启动表单时收到无法识别的配置部分userSettings错误(请注意,在将设置的范围设置为user之前,程序已执行):

InnerException: System.Configuration.ConfigurationErrorsException
   Message=Unrecognized configuration section userSettings. (C:\Documents and Settings\Administrator\Local Settings\Application Data\CallCenterForm\CallCenterForm.vshost.exe_StrongName_bplf30wziudnpq0knzaacfuyomd5rv45\1.0.0.0\user.config line 3)
   Source=System.Configuration
   BareMessage=Unrecognized configuration section userSettings.
   Filename=C:\Documents and Settings\Administrator\Local Settings\Application Data\CallCenterForm\CallCenterForm.vshost.exe_StrongName_bplf30wziudnpq0knzaacfuyomd5rv45\1.0.0.0\user.config
Run Code Online (Sandbox Code Playgroud)

所以在做了一些浏览后,这似乎是由系统上仍然存在的旧user.config文件引起的,导致程序读取它并抛出错误(我不确定实际的底层问题是什么).我还可以确认,当我删除文件时,问题就消失了.

这让我想到了我的问题,是否有一种方法可以更改程序,以便它不会读取旧的user.config文件,因为手动删除它并不理想,因为该程序已在多个系统上生产.

抱歉,如果这已经被覆盖,但我找不到答案.

如果这对我的App.config文件的内容有帮助:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
      <section name="CallCenterForm.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    </sectionGroup>
  </configSections>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
  </startup>
  <applicationSettings>
    <CallCenterForm.Properties.Settings>
      <setting name="saved_output_dir" serializeAs="String">
        <value>c:\</value>
      </setting>
    </CallCenterForm.Properties.Settings>
  </applicationSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)

Col*_*lie 35

我今天遇到了这个错误.解决方案是进入项目属性的程序集信息对话框,并推进程序集和文件版本信息(例如1.0.0.0到1.0.1.0),保存更改并重建应用程序.这将导致编译器重新评估配置并导致应用程序因新版本中没有用户设置而避免创建和读取与新版本对应的新user.config文件.


Tar*_*Tar 7

当有user.config时,App.config是如何使用的?我猜你还需要声明<sectionGroup name="userSettings" ... >以前的声明方式.


rad*_*din 5

您可以通过导航到保存应用程序用户设置的当前目录来修复错误。这将在 %system%\users\your_user\AppData\Local\Microsoft\YourApp.vshost.######\version 中。或删除 user.config 文件,清理您的解决方案,然后重建全部。这应该可以解决问题。