2

我希望能够构建可以检索自己的配置信息的 .Net 标准库,无论它们是从 Net Framework 还是从 Net Core 应用程序调用的。

System.Configuration.ConfigurationManager 已添加到网络标准。我已经证明我可以使用它从传统的应用程序或 web.config 文件中提取,例如:

var value = ConfigurationManager.AppSettings["testString"];

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings>
    <add key="testString" value="xxwx"/>
    <add key="testInt" value="234"/>
    <add key="testBool" value="true"/>
  </appSettings>
<startup>
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/>
</startup>
</configuration>

我希望能够使用 appettings.json 文件中的相同代码提取相同的值。类似于以下内容:

{
  "appSettings": [
    {
      "Key": "testString",
      "Value": "xxwx"
    },
    {
      "Key": "testInt",
      "Value": "234"
    },
    {
      "Key": "testBool",
      "Value": "true"
    }
  ]
}  

有人可以告诉我这是否可以使用 Net Standard 2.0 中的 System.Configuration 来读取 appSettings.json 文件?这里的真正目的是我不希望消费应用程序需要了解库的配置参数。我还希望能够使用来自 Net Framework 和 Net Core 应用程序的相同库。或者,有没有更好的方法来实现这一点?

4

1 回答 1

4

Microsoft.Extensions.Configuration据我所知,该功能由与 .NETStandard 2.0 兼容的 .NETStandard提供。

您可以在此处查看加载配置的示例:

var builder = new ConfigurationBuilder()
     .SetBasePath(Directory.GetCurrentDirectory())
     .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
     .AddJsonFile($"appsettings.{EnvironmentName}.json", optional: true, reloadOnChange: true)
     .AddEnvironmentVariables();
Configuration = builder.Build();

这将加载一个appsettings.json文件以及一个特定于环境的应用程序设置文件(例如:)appsettings.Production.json

要获取设置,您可以在Microsoft Docs中查看有关它的更多信息。

于 2018-03-09T16:05:06.333 回答