【问题标题】:What is the best way to store/set configuration settings for a C# application?为 C# 应用程序存储/设置配置设置的最佳方式是什么?
【发布时间】:2011-11-26 01:48:32
【问题描述】:

我有一些我希望能够设置的值,以及从某种文件加载它们的应用程序。

我能想到的唯一概念,就是一个简单的txt文件,可能有以下几行:

DatabaseName = "DB1/test"
DatabasePassword = "password"
Development = "true"

但我认为它应该在某种配置文件中?加上读取这些值的 txt 文件并不是完全整洁的代码。如果我可以通过在我的应用程序中说来获取数据库名称,那就太好了:

 configfile.DatabaseName

谢谢, 保罗

【问题讨论】:

  • 什么样的应用程序? Winforms、WPF、Web、MVC..?
  • @StuartDunkeld,它是一个 .Net (C#) 网络服务。

标签: c# config


【解决方案1】:

你真的应该使用内置的Application Settings

您可以使用ConfigurationManager直接访问简单的设置

ConfigurationManager.AppSettings["MySetting"] = "SomeStuff";
var mySetting = ConfigurationManager.AppSettings["MySetting"];

还可以使用 ConfigurationManager 直接访问您的连接字符串

var conn = ConfigurationManager.ConnectionStrings["DevSqlServer"];

所有这些都存储在 XML 文件中,默认情况下是您的 *.config 文件。


回答 Doomsknight 来自 cmets 的问题

配置设置可以通过多种方式完成,但默认情况下,它们存储在两个位置。

应用程序级别设置存储在配置文件中。

对于可执行程序,此文件与 .exe 位于同一目录中,并以程序集或可执行文件命名。

示例:MyAssembly.configAnother.Assembly.config

对于 web 应用程序,设置存储在 web.config 文件中(通常) 位于 web 应用程序的根目录中。这些是分层应用的,可以位于 Web 应用程序的每个目录级别。

示例:MySite\web.configMySite\SubDirectory\web.config

用户范围设置stored in the user profile

示例:C:\Documents and Settings\USERNAME\Local Settings\Application Data\ApplicationName

连接字符串存储在配置文件的<connectionStrings></connectionStrings> 部分中。

<connectionStrings>
  <clear />
  <add name="Name" 
   providerName="System.Data.ProviderName" 
   connectionString="Valid Connection String;" />
</connectionStrings>

可以直接在配置文件中轻松修改这些设置,但无需编写一些代码来自动刷新配置文件的各个部分(这是可能的),通常需要重新启动应用程序。

我希望这会有所帮助。

【讨论】:

  • +1,内置,强类型,每个用户或每个应用程序存储使用,使用你需要的任何东西:)
  • @Doomsknight 添加了一些信息来回答您的问题
  • @Josh。优秀的东西! :) 非常感谢。不确定我的评论是否有意义,但你给出了一个很好的答案:)
  • sqlComm.Connection.ConnectionString = ConfigurationManager.ConnectionStrings["MyWebService.Properties.Settings.dbConnString"].ConnectionString;
【解决方案2】:

.NET 内置了一个配置平台。只需将 app.config 文件添加到您的项目并使用 ConfigurationManager 库来访问这些值。

【讨论】:

  • 我已经研究过了,但它似乎是 xml。虽然它确实提供了首选的外部文件。
  • 是的,它是 XML,它是一个非常强大的平台,因为您可以定义自己的各种配置部分,或者您可以保持它非常简单,只需添加新的键和值。
猜你喜欢
  • 2010-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-07
  • 2010-12-05
  • 1970-01-01
  • 1970-01-01
  • 2010-09-19
相关资源
最近更新 更多