2015-05-09 116 views
2

我想了解应用程序设置/ AppSettings。已弃用C#的App.config?

我的理解是,AppSettings(它们在app.config文件中)通过ConfigurationManager.AppSettings访问,这被认为是弃用的功能。

据我所知应用程序设置通过Properties.Settings.Default进行访问,通常创建为.settings文件(在Visual Studio中,这可以在Project Properties中完成)。

如果这是正确的(请确认),我的问题是为什么Visual Studio中的所有项目都会自动创建一个App.config文件?我可以/应该删除此文件并创建一个Settings.settings文件吗?我应该同时使用吗? (为什么?)我可以使用Properties.Settings访问app.config文件吗?如果是这样,怎么样?

此外,如果Properties.Settings.Default访问“默认”设置文件,您将如何/为什么要访问默认文件以外的文件?

编辑:此问题未由AppSettings与应用程序设置线程回答,因为我的具体问题是为什么我需要App.Config文件。

+1

http://stackoverflow.com/questions/2350893/appsettings-vs-applicationsettings-appsettings-outdated – Haighstrom

+0

是,我可以同时使用的.config和答案。设置文件,虽然.settings更新,两者仍然有实用性取决于情况? – Haighstrom

回答

1

ApplicationSettings优于AppSettings,因为它们是强类型的,但有时候(比如在Azure中)AppSettings是首选的,因为它们可以通过实例的实例从Azure控制面板进行设置。

这就是说,让我们看看你的问题的其他部分有关Settings.Default与App.Config。

我不会从每个项目中删除App.Config,因为它会在您更新设置时自动更新。设置文件在代码中具有默认值,但App.Config文件可以在运行时覆盖这些值。这很好,能够将相关部分复制到将要消耗库的新应用程序(到它们的app.config或web.config中)。

从您的项目执行的唯一app.config文件是启动项目,并且该app.config(或web.config,因为它可能)中的值是在运行时使用的。

希望这会清除文件之间关系的一些混淆。配置文件的

样本结构:

ProjectA 
- ProjectA.Settings 
- App.Config // VS syncs with Settings file 
ProjectB 
- ProjectB.Settings 
- App.Config // VS syncs with Settings file 
ProjectC (Startup Project 
- ProjectC.Settings 
- App.Config 
    // Can contain override settings for ProjectA.Settings and ProjectB.Settings 
+0

所以我没有意识到.settings文件和app.config相互更新。但我仍然不确定我是否理解每个人的目的。为什么有两个文件做同样的事情(即保存用户/应用程序数据)? 是因为与app.config不同,设置文件与命名空间相关联,所以您可以通过一个App.Config文件控制多个设置文件? – Haighstrom

+0

正确。最后,您的启动应用程序App.Config可能包含多个* .Settings文件配置的部分,以覆盖默认值。 –

+0

但为什么不只是有几个.settings文件,并没有App.Config文件? .settings文件只是一种用户友好的方式来修改app.config文件,或者在运行时都可以实际访问它们吗? – Haighstrom