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

我发现

ConfigurationSettings.AppSettings.Get("MySetting")

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

我读到我应该使用:

ConfigurationManager.AppSettings["MySetting"]

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

最好的方法是什么?


当前回答

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

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

其他回答

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

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

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

您需要向System添加一个引用。在项目的引用文件夹中的配置。

你绝对应该使用ConfigurationManager,而不是过时的ConfigurationSettings。

我可以在。net Core项目中使用以下方法:

步骤:

Create an appsettings.json (format given below) in your project. Next create a configuration class. The format is provided below. I have created a Login() method to show the usage of the Configuration Class. Create appsettings.json in your project with content: { "Environments": { "QA": { "Url": "somevalue", "Username": "someuser", "Password": "somepwd" }, "BrowserConfig": { "Browser": "Chrome", "Headless": "true" }, "EnvironmentSelected": { "Environment": "QA" } } public static class Configuration { private static IConfiguration _configuration; static Configuration() { var builder = new ConfigurationBuilder() .AddJsonFile($"appsettings.json"); _configuration = builder.Build(); } public static Browser GetBrowser() { if (_configuration.GetSection("BrowserConfig:Browser").Value == "Firefox") { return Browser.Firefox; } if (_configuration.GetSection("BrowserConfig:Browser").Value == "Edge") { return Browser.Edge; } if (_configuration.GetSection("BrowserConfig:Browser").Value == "IE") { return Browser.InternetExplorer; } return Browser.Chrome; } public static bool IsHeadless() { return _configuration.GetSection("BrowserConfig:Headless").Value == "true"; } public static string GetEnvironment() { return _configuration.GetSection("EnvironmentSelected")["Environment"]; } public static IConfigurationSection EnvironmentInfo() { var env = GetEnvironment(); return _configuration.GetSection($@"Environments:{env}"); } } public void Login() { var environment = Configuration.EnvironmentInfo(); Email.SendKeys(environment["username"]); Password.SendKeys(environment["password"]); WaitForElementToBeClickableAndClick(_driver, SignIn); }

阅读配置:

你需要在配置中添加一个引用:

打开项目上的“属性” 进入“设置”选项卡 添加“名称”和“值” 使用以下代码获取价值: 字符串值= Properties.Settings.Default.keyname;

保存到配置:

   Properties.Settings.Default.keyName = value;
   Properties.Settings.Default.Save();

您可以将App.config文件添加到DLL文件中。config只适用于可执行的项目,因为所有DLL文件都从正在执行的EXE文件的配置文件中获取配置。

假设你的解决方案中有两个项目:

SomeDll SomeExe

您的问题可能与您将app.config文件包含到SomeDLL而不是SomeExe有关。SomeDll能够从SomeExe项目中读取配置。