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

最近在开发基于.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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • .net跨平台前世今生 .NET core 1.0并不是对原有的.net平台的升级,而是一次全新的重写,这个开发过...
    never_say_never阅读 10,659评论 1 6
  • 2015年7月30日 本文作者是 Managed Languages 团队项目经理 Lucian Wischik。...
    OneAPM阅读 2,731评论 1 5
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,259评论 4 61
  • 月换新勾知上下, 云塑万形藏风雨。 形似月, 心如云, 云淡月明朗。 智明万象识今古, 慧扫万物存经络。 增长智,...
    hsl_7cbf阅读 243评论 0 0
  • 这大概是一年中最热的一个月了吧?终于在月末迎来了台风天,才换来些许凉快。 月初一个人因为工作去了趟上海,这是一个人...
    傻丫头Lin阅读 184评论 0 0