ASP.NET Core快速入门(Jessetalk)(第2章:配置管理)

课程链接:http://video.jessetalk.cn/course/explore

良心课程,大家一起来学习哈!

任务9:配置介绍

  • 命令行配置
  • Json文件配置
  • 从配置文件文本到c#对象实例的映射 - Options 与 Bind
  • 配置文件热更新
  • 框架设计:Configuration

任务10:命令行配置

新建一个项目CommandLineSample--控制台应用(.NET Core)

依赖性右键--管理NuGet程序包--下载microsoft.aspnetcore.all

传入参数

using System;
using Microsoft.Extensions.Configuration;

namespace CommandLineSample
{
    class Program
    {
        static void Main(string[] args)
        {
            var builder = new ConfigurationBuilder()
                .AddCommandLine(args);

            var configuration = builder.Build();

            Console.WriteLine($"name: {configuration ["name"]}");
            Console.WriteLine($"age: {configuration["age"]}");

            Console.ReadLine();
        }
    }
}

需要通过项目右键--调试--输入参数:name=mingsonzheng age=18

启动项目,得到结果:

默认参数

using System;
using System.Collections.Generic;
using Microsoft.Extensions.Configuration;

namespace CommandLineSample
{
    class Program
    {
        static void Main(string[] args)
        {
            var settings = new Dictionary<string, string>
            {
                {"name", "mingsonzheng" },
                {"age", "18" }
            };

            var builder = new ConfigurationBuilder()
                .AddInMemoryCollection(settings)
                .AddCommandLine(args);

            var configuration = builder.Build();

            Console.WriteLine($"name: {configuration ["name"]}");
            Console.WriteLine($"age: {configuration["age"]}");

            Console.ReadLine();
        }
    }
}

清空应用程序参数

启动项目

通过PowerShell运行程序,默认参数与传入参数

PS C:\WINDOWS\system32> d:
PS D:\> cd D:\jessetalk\CommandLineSample\CommandLineSample\bin\Debug\netcoreapp2.1
PS D:\jessetalk\CommandLineSample\CommandLineSample\bin\Debug\netcoreapp2.1> dir


    目录: D:\jessetalk\CommandLineSample\CommandLineSample\bin\Debug\netcoreapp2.1


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       2019-01-23     23:54         244607 CommandLineSample.deps.json
-a----       2019-01-24      0:01           5632 CommandLineSample.dll
-a----       2019-01-24      0:01            604 CommandLineSample.pdb
-a----       2019-01-23     23:54            240 CommandLineSample.runtimeconfig.dev.json
-a----       2019-01-23     23:54            154 CommandLineSample.runtimeconfig.json


PS D:\jessetalk\CommandLineSample\CommandLineSample\bin\Debug\netcoreapp2.1> dotnet CommandLineSample.dll
name: mingsonzheng
age: 18

PS D:\jessetalk\CommandLineSample\CommandLineSample\bin\Debug\netcoreapp2.1> dotnet CommandLineSample.dll name=jim age=22
name: jim
age: 22

任务11:Json文件配置

新建一个项目JsonComfigSample--控制台应用(.NET Core)

依赖性右键--管理NuGet程序包--下载microsoft.aspnetcore.all

添加Json文件:项目右键--添加新建项class.json

{
  "ClassNo": "1",
  "ClassDesc": "ASP.NET Core 101",

  "Students": [
    {
      "name": "mingsonzheng",
      "age": "18"
    },
    {
      "name": "jim",
      "age": "28"
    },
    {
      "name": "tom",
      "age": "38"
    }
  ]
}

由于class.json不在bin\Debug目录下,所以默认不会被编译,需要修改它的属性,文件右键属性

using System;
using Microsoft.Extensions.Configuration;

namespace JsonComfigSample
{
    class Program
    {
        static void Main(string[] args)
        {
            var builder = new ConfigurationBuilder()
                .AddJsonFile("class.json");

            Console.ReadLine();
        }
    }
}

启动项目,可以看到class.json被复制到bin\Debug目录,这样dll就可以读取到class.json文件

读取json文件

using System;
using Microsoft.Extensions.Configuration;

namespace JsonComfigSample
{
    class Program
    {
        static void Main(string[] args)
        {
            var builder = new ConfigurationBuilder()
                .AddJsonFile("class.json");

            // 调用Build之前请确保拷贝的class.json文件没有格式错误
            var configuration = builder.Build();

            Console.WriteLine($"ClassNo: { configuration["ClassNo"]}");
            Console.WriteLine($"ClassDesc: { configuration["ClassDesc"]}");

            Console.WriteLine("Students");

            Console.Write(configuration["Students:0:name"]);
            Console.WriteLine(configuration["Students:0:age"]);

            Console.Write(configuration["Students:1:name"]);
            Console.WriteLine(configuration["Students:1:age"]);

            Console.Write(configuration["Students:2:name"]);
            Console.WriteLine(configuration["Students:2:age"]);

            Console.ReadLine();
        }
    }
}

启动项目

知识共享许可协议

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

欢迎转载、使用、重新发布,但务必保留文章署名 郑子铭 (包含链接: http://www.cnblogs.com/MingsonZheng/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。

如有任何疑问,请与我联系 ([email protected]) 。

猜你喜欢

转载自www.cnblogs.com/MingsonZheng/p/10312209.html
今日推荐