如何为C#应用程序存储/设置配置设置是最佳方式?

4

我有一些值需要设置,并且希望应用程序能够从某种文件中加载它们。

我能想到的唯一概念是简单的 txt 文件,可能会包含以下几行:

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

我认为这些应该写在某种配置文件中,而读取文本文件并不是一个整洁的代码。如果我能够通过在我的应用程序中说出来获取数据库名称就更好了:

 configfile.DatabaseName

感谢您,保罗。

什么类型的应用程序?Winforms、WPF、Web、MVC..? - stuartd
@StuartDunkeld,这是一个 .Net (C#) 的 Web 服务。 - IAmGroot
2个回答

11

您真的应该使用内置的应用程序设置

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

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

同时,您还可以使用ConfigurationManager直接访问连接字符串。

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

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


回答Doomsknight在评论中的问题

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

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

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

例如:MyAssembly.configAnother.Assembly.config

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

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

用户作用域设置 存储在用户配置文件夹中

例如: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,内置的,强类型的,使用按用户或应用程序的存储,使用您需要的任何内容 :) - Sergei B.
1
@Doomsknight添加了一些信息以回答您的问题。 - Josh
@Josh。太棒了!:)非常感谢。我不确定我的评论是否有意义,但你给了一个很好的答案 :) - IAmGroot
sqlComm.Connection.ConnectionString = ConfigurationManager.ConnectionStrings["MyWebService.Properties.Settings.dbConnString"].ConnectionString; - IAmGroot

4

.NET内置了一个配置平台。只需在您的项目中添加一个app.config文件,并使用ConfigurationManager库访问值即可。


我已经研究过这个问题,但它似乎是XML格式。尽管它提供了外部文件的选项。 - IAmGroot
2
是的,它是XML,并且它是一个非常强大的平台,因为您可以定义各种自己的配置部分,或者您可以保持它非常简单,只需添加新的键和值。 - The Evil Greebo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接