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

我发现

ConfigurationSettings.AppSettings.Get("MySetting")

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

我读到我应该使用:

ConfigurationManager.AppSettings["MySetting"]

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

最好的方法是什么?


当前回答

网络。配置用于web应用程序。网络。Config默认情况下有几个web应用程序所需的配置。你可以有一张网。为web应用程序下的每个文件夹配置。

app.config用于Windows应用程序。当您在Visual Studio中构建应用程序时,它将自动重命名为<appname>.exe。配置和此文件必须随应用程序一起交付。

你可以使用相同的方法从两个配置文件中调用应用程序设置值: System.Configuration.ConfigurationSettings.AppSettings(“关键”)

其他回答

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

我使用的是Mac版本17.0.6的Visual Studio。

正如你在这张截图上看到的,不可能给System.Configuration添加引用。

解决方案:

安装NuGet Package - System.Configuration.ConfigurationManager 创建app.config文件,将“Build action”设置为“EmbeddedResource”

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <appSettings>
        <add key="name" value="Joe"/>
    </appSettings>
</configuration>

使用System.Configuration; 享受)

string name = ConfigurationManager.AppSettings["name"];

BTW:不要为库添加app.config

右键单击你的类库,从菜单中选择“添加引用”选项。

在. net选项卡中,选择System.Configuration。这将包括系统。将DLL文件配置到项目中。

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

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

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

如果你需要/想要使用ConfigurationManager类…

你可能需要通过微软的NuGet Package Manager加载System.Configuration.ConfigurationManager

工具->NuGet包管理器->管理解决方案的NuGet包…

微软文档

从医生那里有一件事值得注意…

如果应用程序需要对自己的配置进行只读访问, 我们建议你使用GetSection(String)方法。这个方法 提供对当前缓存的配置值的访问 应用程序,其性能优于Configuration 类。