积极答复者
C#项目中的Properties.Setting无法保存到app.config

问题
-
各位老师好,
最近我在使用VS2005 C#开发中,遇到了一个奇怪问题,有两个现象:
现象1.在通过Properties面板中的【设置】标签,添加新的Setting,点击保存后,弹出错误信息"将值保存到app.config文件时出错.该文件可能已损坏或包含错误的XML";
现象2.如果项目有app.config文件,则当在解决方案管理器中,右键项目->属性,弹出Properties面板,选择【设置】标签后,面板中将出现一个错误"无法将类型为“System.Configuration.DefaultSection”的对象强制转换为类型“System.Configuration.ConnectionStringsSection"".并且,如果此时打开了app.config文件,那么错误列表会出现很多警告(下面贴出了示例)
我尝试了一些做法:
1.删除了app.config,新建app.config,问题依然存在;
2.找到以前的没有问题的项目打开,发现都出现了这种问题(个人觉得,这应该不是项目自身问题,可能是VS2005环境出现了问题)
下面是一个app.config文件内容(出问题之前是可以正常使用的)
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" > <section name="RNAlarm.DevConfig.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" /> <section name="RNAlarmDevConfig.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" /> </sectionGroup> </configSections> <userSettings> <RNAlarm.DevConfig.Properties.Settings> <setting name="db_cnStr" serializeAs="String"> <value /> </setting> <setting name="last_user" serializeAs="String"> <value /> </setting> <setting name="last_psw" serializeAs="String"> <value /> </setting> <setting name="isAutoLogin" serializeAs="String"> <value>False</value> </setting> </RNAlarm.DevConfig.Properties.Settings> <RNAlarmDevConfig.Properties.Settings> <setting name="db_cnStr" serializeAs="String"> <value /> </setting> </RNAlarmDevConfig.Properties.Settings> </userSettings> </configuration>
警告 1 无法将类型为“System.Configuration.DefaultSection”的对象强制转换为类型“System.Configuration.ConnectionStringsSection”。 0 0 警告 2 未声明“requirePermission”属性。 D:\JobsBin\VS2005\CS\Alarm_YB_2012_04_27\Alarm_YB_2012_04_27\RNAlarmDevConfig\app.config 5 232 RNAlarmDevConfig 警告 3 未声明“requirePermission”属性。 D:\JobsBin\VS2005\CS\Alarm_YB_2012_04_27\Alarm_YB_2012_04_27\RNAlarmDevConfig\app.config 6 231 RNAlarmDevConfig 消息 4 未能找到元素“userSettings”的架构信息。 D:\JobsBin\VS2005\CS\Alarm_YB_2012_04_27\Alarm_YB_2012_04_27\RNAlarmDevConfig\app.config 9 6 RNAlarmDevConfig 消息 5 未能找到元素“RNAlarm.DevConfig.Properties.Settings”的架构信息。 D:\JobsBin\VS2005\CS\Alarm_YB_2012_04_27\Alarm_YB_2012_04_27\RNAlarmDevConfig\app.config 10 10 RNAlarmDevConfig 消息 6 未能找到元素“setting”的架构信息。 D:\JobsBin\VS2005\CS\Alarm_YB_2012_04_27\Alarm_YB_2012_04_27\RNAlarmDevConfig\app.config 11 14 RNAlarmDevConfig 消息 7 未能找到属性“name”的架构信息。 D:\JobsBin\VS2005\CS\Alarm_YB_2012_04_27\Alarm_YB_2012_04_27\RNAlarmDevConfig\app.config 11 22 RNAlarmDevConfig 消息 8 未能找到属性“serializeAs”的架构信息。 D:\JobsBin\VS2005\CS\Alarm_YB_2012_04_27\Alarm_YB_2012_04_27\RNAlarmDevConfig\app.config 11 38 RNAlarmDevConfig 消息 9 未能找到元素“value”的架构信息。 D:\JobsBin\VS2005\CS\Alarm_YB_2012_04_27\Alarm_YB_2012_04_27\RNAlarmDevConfig\app.config 12 18 RNAlarmDevConfig 消息 10 未能找到元素“setting”的架构信息。 D:\JobsBin\VS2005\CS\Alarm_YB_2012_04_27\Alarm_YB_2012_04_27\RNAlarmDevConfig\app.config 14 14 RNAlarmDevConfig 消息 11 未能找到属性“name”的架构信息。 D:\JobsBin\VS2005\CS\Alarm_YB_2012_04_27\Alarm_YB_2012_04_27\RNAlarmDevConfig\app.config 14 22 RNAlarmDevConfig 消息 12 未能找到属性“serializeAs”的架构信息。 D:\JobsBin\VS2005\CS\Alarm_YB_2012_04_27\Alarm_YB_2012_04_27\RNAlarmDevConfig\app.config 14 39 RNAlarmDevConfig 消息 13 未能找到元素“value”的架构信息。 D:\JobsBin\VS2005\CS\Alarm_YB_2012_04_27\Alarm_YB_2012_04_27\RNAlarmDevConfig\app.config 15 18 RNAlarmDevConfig 消息 14 未能找到元素“setting”的架构信息。 D:\JobsBin\VS2005\CS\Alarm_YB_2012_04_27\Alarm_YB_2012_04_27\RNAlarmDevConfig\app.config 17 14 RNAlarmDevConfig 消息 15 未能找到属性“name”的架构信息。 D:\JobsBin\VS2005\CS\Alarm_YB_2012_04_27\Alarm_YB_2012_04_27\RNAlarmDevConfig\app.config 17 22 RNAlarmDevConfig 消息 16 未能找到属性“serializeAs”的架构信息。 D:\JobsBin\VS2005\CS\Alarm_YB_2012_04_27\Alarm_YB_2012_04_27\RNAlarmDevConfig\app.config 17 38 RNAlarmDevConfig 消息 17 未能找到元素“value”的架构信息。 D:\JobsBin\VS2005\CS\Alarm_YB_2012_04_27\Alarm_YB_2012_04_27\RNAlarmDevConfig\app.config 18 18 RNAlarmDevConfig 消息 18 未能找到元素“setting”的架构信息。 D:\JobsBin\VS2005\CS\Alarm_YB_2012_04_27\Alarm_YB_2012_04_27\RNAlarmDevConfig\app.config 20 14 RNAlarmDevConfig 消息 19 未能找到属性“name”的架构信息。 D:\JobsBin\VS2005\CS\Alarm_YB_2012_04_27\Alarm_YB_2012_04_27\RNAlarmDevConfig\app.config 20 22 RNAlarmDevConfig 消息 20 未能找到属性“serializeAs”的架构信息。 D:\JobsBin\VS2005\CS\Alarm_YB_2012_04_27\Alarm_YB_2012_04_27\RNAlarmDevConfig\app.config 20 41 RNAlarmDevConfig 消息 21 未能找到元素“value”的架构信息。 D:\JobsBin\VS2005\CS\Alarm_YB_2012_04_27\Alarm_YB_2012_04_27\RNAlarmDevConfig\app.config 21 18 RNAlarmDevConfig 消息 22 未能找到元素“RNAlarmDevConfig.Properties.Settings”的架构信息。 D:\JobsBin\VS2005\CS\Alarm_YB_2012_04_27\Alarm_YB_2012_04_27\RNAlarmDevConfig\app.config 24 10 RNAlarmDevConfig 消息 23 未能找到元素“setting”的架构信息。 D:\JobsBin\VS2005\CS\Alarm_YB_2012_04_27\Alarm_YB_2012_04_27\RNAlarmDevConfig\app.config 25 14 RNAlarmDevConfig 消息 24 未能找到属性“name”的架构信息。 D:\JobsBin\VS2005\CS\Alarm_YB_2012_04_27\Alarm_YB_2012_04_27\RNAlarmDevConfig\app.config 25 22 RNAlarmDevConfig 消息 25 未能找到属性“serializeAs”的架构信息。 D:\JobsBin\VS2005\CS\Alarm_YB_2012_04_27\Alarm_YB_2012_04_27\RNAlarmDevConfig\app.config 25 38 RNAlarmDevConfig 消息 26 未能找到元素“value”的架构信息。 D:\JobsBin\VS2005\CS\Alarm_YB_2012_04_27\Alarm_YB_2012_04_27\RNAlarmDevConfig\app.config 26 18 RNAlarmDevConfig
现在,一直被此问题困扰,而无法继续开发.因为VS2005已经安装了很多第三方的SDK和组件,所以重装VS2005会非常麻烦,不敢轻易尝试.希望各位老师,能给一个可行的解决办法!不胜感激!
- 已移动 Vicky SongMicrosoft employee 2012年6月27日 4:55 C# issue. (发件人:Visual Studio 相关讨论(Visual Studio 2010以前版本))
答案
-
重装.net framework看看
- 已标记为答案 小千世界 2012年6月28日 0:45
- 已标记为答案 Bob ShenModerator 2012年6月28日 3:26
全部回复
-
-
重装.net framework看看
- 已标记为答案 小千世界 2012年6月28日 0:45
- 已标记为答案 Bob ShenModerator 2012年6月28日 3:26
-
并且这个问题直接引出了另一个问题,在使用实例化OracleConnection类代码时,如果不进行断点调试的运行情况,会报错"The type initializer for 'System.Data.OracleClient.OracleConnection' threw an exception.";在断点调试时(断点要加在OracleConnection类实例化之前),这时就不报错,程序按预定效果运行.
在网上一个提问者也遇到了同样问题,他就是因为这个app.config问题导致的,并且通过解决了app.config问题,这个OracleConnection实例化问题随之消失,连接如下:https://forums.oracle.com/forums/thread.jspa?threadID=430236.另外,我在另一台配置有VS2005的机器上(该vs2005的app.config文件不存在前述问题),测试了相同代码,不报这个错误.
哪位老师关注一下这个问题啊.谢谢啦,很着急在线等待!
-
谢谢版主回复,现在问题已经解决,确实是因为.net framework的原因,可能是我之前在调整JIT调试时,更改过machine.config文件导致的.之后我企图卸载.net framework2.0 sp2,但提示错误:不能卸载,影响其他程序等等的问题...然后从网上找了个framework2.0的卸载工具,使用后,重启,发现它并不能把framework彻底卸载,只是依据这里面的步骤进行了操作http://support.microsoft.com/kb/908077,但是并没有启动framework的卸载程序(在添加与安装程序中依然存在),反而导致vs2005,和sqlserver等依赖.net framework的程序无法运行了,并且这时重新安装framework的安装程序,还是提示当前已安装相同版本而无法继续。无奈之下,在添加安装程序面板中,尝试修复framework,结果出现了一个寻找安装CD的窗口,点击浏览按钮,它指向的是一个“Netfx20a_x86.msi”文件,到微软下载上搜索,并没有提供该文件的下载。但当我尝试把之前从官网下载的.net framework2.0sp2的安装文件"NetFx20SP2_x86.exe"解压后,在'wcu'文件夹下,找到了这个文件"Netfx20a_x86.msi".点击修复,指向这个文件后,修复成功。这时vs2005和sqlsrv又可以运行了,并且,上述app.config文件问题也随之解决!再次谢谢版主老师feiyun0112以及各位网友亂馬客的回复.