我正在编写一个c#类库,需要能够从web读取设置。config或app.config文件(取决于DLL是否从ASP. config引用。NET web应用程序或Windows窗体应用程序)。

我发现

ConfigurationSettings.AppSettings.Get("MySetting")

但该代码已被微软标记为弃用。

我读到我应该使用:

ConfigurationManager.AppSettings["MySetting"]

但是,在c#类库项目中,System.Configuration.ConfigurationManager类似乎不可用。

最好的方法是什么?


当前回答

这里有一个例子:App.config

<applicationSettings>
    <MyApp.My.MySettings>
        <setting name="Printer" serializeAs="String">
            <value>1234 </value>
        </setting>
    </MyApp.My.MySettings>
</applicationSettings>

Dim strPrinterName as string = My.settings.Printer

其他回答

另一个可能的解决方案:

var MyReader = new System.Configuration.AppSettingsReader();
string keyvalue = MyReader.GetValue("keyalue",typeof(string)).ToString();

对于如下所示的示例app.config文件:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="countoffiles" value="7" />
    <add key="logfilelocation" value="abc.txt" />
  </appSettings>
</configuration>

使用下面所示的代码读取上述应用程序设置:

using System.Configuration;

您可能还需要添加对System的引用。在您的项目中配置(如果还没有的话)。然后你可以像这样访问这些值:

string configvalue1 = ConfigurationManager.AppSettings["countoffiles"];
string configvalue2 = ConfigurationManager.AppSettings["logfilelocation"];

要访问自己的设置,您不需要使用ConfigurationManager。

要做到这一点,您应该使用

{您的应用名称}。属性.设置。{设置名称}

你可以使用下面这条线。在我的例子中,它是有效的: System.Configuration.ConfigurationSettings.AppSettings(“yourKeyName”)

您必须注意上面的代码行也是旧版本,并且在新库中已弃用。

我强烈建议您为这个调用创建一个包装器。类似于ConfigurationReaderService,并使用依赖注入来获取这个类。通过这种方式,您将能够为测试目的隔离这些配置文件。

所以使用ConfigurationManager.AppSettings["something"];建议并返回该值。如果.config文件中没有任何可用的键,您可以使用此方法创建某种默认返回。