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

我发现

ConfigurationSettings.AppSettings.Get("MySetting")

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

我读到我应该使用:

ConfigurationManager.AppSettings["MySetting"]

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

最好的方法是什么?


当前回答

我正在用这个,对我来说效果很好:

textBox1.Text = ConfigurationManager.AppSettings["Name"];

其他回答

请检查您正在使用的. net版本。它应该大于4。你必须添加系统。配置系统库到您的应用程序。

必须向系统添加引用。项目的配置程序集。

我总是为所有配置值创建一个带有类型安全属性的IConfig接口。然后,Config实现类将调用包装到System.Configuration。整个系统。配置调用现在在一个地方,维护和跟踪正在使用的字段并声明它们的默认值变得更加容易和清晰。我编写了一组私有帮助器方法来读取和解析常见数据类型。

使用IoC框架,你可以通过简单地将接口传递给类构造函数,在应用程序中的任何地方访问IConfig字段。你还可以在你的单元测试中创建IConfig接口的模拟实现,这样你就可以测试各种配置值和值组合,而不需要触及你的App.config或Web。配置文件。

我一直试图找到一个解决这个问题的几天了。我可以通过在web中的appsettings标签中添加一个键来解决这个问题。配置文件。这将在使用helper时覆盖.dll文件。

<configuration>
    <appSettings>
        <add key="loginUrl" value="~/RedirectValue.cshtml" />
        <add key="autoFormsAuthentication" value="false"/>
    </appSettings>
</configuration>

这里有一个例子: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