zoukankan      html  css  js  c++  java
  • .net core 2.0学习笔记(五):程序配置&ConfigurationManager

         配置组件是.net framework中非常常用的功能。在创建.net framework 工程时,系统不仅会自动生成app.config文件,而且还提供了非常强大的访问类库。但是这些好东西,在.net core 2.0中已经不复存在,至少说没有.net framework 中那么完美了。

         在升级.net framework 程序到.net core 2.0时,如果通过.NET Portability Analyzer分析代码,会发现下面的提示,.net core:supported 2.0+,.net standard:not supported.虽然.net 2.0暂时不支持,但是微软提供的扩展类库是支持的,需要自己找Microsoft.Extention类库去。

    Image(52)

         好吧。既然Core 2.0中没有COnfigurationManager,我们就简单封装一个吧。首先,创建一个.net core 2.0 的类库工程.

    Image(53)

    然后打开nuget包管理。输入:Microsoft.Extensions.Configuration.Json,然后安装即可。

    Image(54)

    Image(55)

         在刚才新建的工程中新增类:ConfigurationManager,命名空间可以自定义了。然后,加入下面代码。

    public class ConfigurationManager
        {
            private static IConfigurationRoot config = null;
            static ConfigurationManager()
            {
                // Microsoft.Extensions.Configuration扩展包提供的
                var builder = new ConfigurationBuilder()
                    .AddJsonFile("app.json");
                config = builder.Build();
            }

           public static IConfigurationRoot AppSettings
            {
                get
                {
                    return config;
                }
            }

           public static string Get(string key)
            {
                return config[key];
            }

       }

         新建一个.net core 管理控制台程序,并新增加文件:app.config。文件内容为:

    {

           "Name": "my-other-value"

    }

         在管理控制台程序的Main函数中,编写下面代码,同时添加对类库工程的引用。配置问题比较顺利的搞定!  

      static void Main(string[] args)

      {

          Console.WriteLine(ConfigurationManager.AppSettings["Name"]);

          Console.ReadLine();

      }

      

      OK,通过上面努力,终于解决了配置的问题了。但是,有更简单的方法。直接在nuget管理中搜索:System.Configuration.ConfigurationManager,添加引用后,问题解决。郁闷,微软提供了这些类库,不知道为什么不放到公共的类库中呢?害的我大费周折。

  • 相关阅读:
    LeetCode15 3Sum
    LeetCode10 Regular Expression Matching
    LeetCode20 Valid Parentheses
    LeetCode21 Merge Two Sorted Lists
    LeetCode13 Roman to Integer
    LeetCode12 Integer to Roman
    LeetCode11 Container With Most Water
    LeetCode19 Remove Nth Node From End of List
    LeetCode14 Longest Common Prefix
    LeetCode9 Palindrome Number
  • 原文地址:https://www.cnblogs.com/vveiliang/p/7416370.html
Copyright © 2011-2022 走看看