2015-12-14 127 views
1

使用此答案:https://stackoverflow.com/a/453230/3012708我想我已经成功实现了在我的C#应用​​程序中保存设置。使用Properties.Settings保存应用程序设置不起作用?

但是,节约似乎永远不会发生 - 应用程序配置文件永远不会更新,如果我添加一些代码从SettingChangingEventHandler或SettingsSavingEventHandler调用,它永远不会被调用。

我添加了上面引用的答案中描述的设置。 “User”范围中有4个bool值,Access Modifier的设置保留在“Internal”处。

在我的代码我呼吁:

Using MyApplication.Properties; 

然后设置设置 “间隔”,我做的:

Settings.Default.Interval = true; 

,并保存:

Settings.Default.Save(); 

如果我检查MyApplication.exe.config文件,我看到设置在那里,如:

<userSettings> 
    <MyApplication.Properties.Settings> 
     <setting name="Interval" serializeAs="String"> 
      <value>False</value> 
     </setting> 
    </MyApplication.Properties.Settings> 
</userSettings> 

但是,它仍然有它的原始值 - 错误。

任何想法?

我想没有“使用...”的代码,并使用完整的代码更新:

MyApplication.Properties.Settings.Default.Interval = true; 
MyApplication.Properties.Settings.Default.Save(); 

我也尝试运行的应用程序作为管理员的Visual Studio之外 - 没有运气。

+2

确定没有设置设置?注意:它们将被设置在用户的配置文件下,而不是在解决方案文件夹中。一般在'c:\ Users \ \ AppData \ Local \ '(AppData是一个隐藏文件夹)。 – Matthew

+0

其他信息:面向.NET Framework 4.5 – user3012708

+0

@Matthew你实际上是完全正确的......我是如何忽略它的? 这是越来越晚我猜:/ 转发,我会标记为答案。 – user3012708

回答

3

确定没有设置设置?注意:它们将被设置在用户的配置文件下,而不是在解决方案文件夹中。一般在c:\Users\<username>\AppData\Local\<appname>(AppData是一个隐藏文件夹)。

3

MyApplication.exe.config是一个用于部署的文件。您正确地保存设置,但exe.config文件包含原始值,因此您没有看到任何更改。

如果你想检查它是否正确保存只写

if(Properties.Settings.Default.Interval) 
{ 
    throw new Exception("Is True"); 
} 

从MSDN:

这些应用有两个配置文件:一个源配置文件,它是由开发商在开发过程中修改,以及随应用程序分发的输出文件。

当你在Visual Studio中开发,将源配置文件在项目目录您的应用程序,并设置其复制到输出目录属性始终复制或是否有更新的复制。配置文件的名称是扩展名为.config的应用程序的名称。例如,名为myApp.exe的应用程序应该有一个名为myApp.exe.config的源配置文件。

Visual Studio自动将源配置文件复制到编译程序集所在的目录,以创建与应用程序一起部署的输出配置文件。在某些情况下,Visual Studio可能会修改输出配置文件;有关更多信息,请参阅Redirecting Assembly Versions文章的应用程序级别部分中的重定向程序集版本。

+0

非常感谢! :) – user3012708