美文网首页dotNETASP.NET Core见识录程序员
.NET Core类库中读取配置文件

.NET Core类库中读取配置文件

作者: 雪飞鸿 | 来源:发表于2018-03-07 14:54 被阅读133次

最近在开发基于.NET Core的NuGet包,遇到一个问题:
.NET Core中已经没有ConfigurationManager类,在类库中无法像.NET Framework那样读取App.configWeb.config(.NET Core中是appsetings.json)文件中的数据。

但,我们可以自己写少量代码来实现在类库中读取配置文件信息。

思路:

先在当前目录下寻找appsettings.json文件

  • 若存在,则读取改文件中的配置信息
  • 不存在,则到根目录中寻找appsettings.json文件

具体做法如下:

  1. 使用NuGet安装Microsoft.Extensions.Configuration.Json

  2. 实现代码

public static class ConfigHelper
{
    private static IConfiguration _configuration;

    static ConfigHelper()
    {
        //在当前目录或者根目录中寻找appsettings.json文件
        var fileName = "appsettings.json";

        var directory = AppContext.BaseDirectory;
        directory = directory.Replace("\\", "/");

        var filePath = $"{directory}/{fileName}";
        if (!File.Exists(filePath))
        {
            var length = directory.IndexOf("/bin");
            filePath = $"{directory.Substring(0, length)}/{fileName}";
        }

        var builder = new ConfigurationBuilder()
            .AddJsonFile(filePath, false, true);

        _configuration = builder.Build();
    }

    public static string GetSectionValue(string key)
    {
        return _configuration.GetSection(key).Value;
    }
}

测试

在根目录下或当前目录下添加appsetting.json文件,并添加节点:

{
  "key": "value"
}

测试代码如下:

public class ConfigHelperTest
{
    [Fact]
    public void GetSectionValueTest()
    {
        var value = ConfigHelper.GetSectionValue("key");
        Assert.Equal(value, "value");
    }
}

测试通过:


测试通过

顺道安利下一款用于.NET开发的跨平台IDE——Rider,以上代码均在Rider中编写。

这是NuGet包项目地址:https://github.com/CwjXFH/WJChiLibraries,希望大家多多指点。

相关阅读

Configure an ASP.NET Core App

相关文章

网友评论

  • voxer:跨平台IDE用VSCode不好吗?而且现在VS都可以跨平台了。
  • 天天向上卡索:装一个包就可以了 System.Configuration.ConfigurationManager
  • 转交遇见陈绮贞:可以用ioption 配置添加 这样设计会比较好,开发类库还是不要去读配置文件吧
    雪飞鸿:@转交遇见陈绮贞 读配置文件是为了在团队内部做一些强约束,所谓“约定大于配置”。

本文标题:.NET Core类库中读取配置文件

本文链接:https://www.haomeiwen.com/subject/zupjfftx.html