.Net Core控制台应用程序使用依赖注入、配置文件等

.Net Core作为一门新语言,资料实在是太少了,并且国内学习的人也不多,虽然性能还行也跨平台了但是生态圈不发展起来也不行

刚出来的时候用 .Net Core + Dapper + Mysql 弄了个简单的CMS,过了这么久了版本也更新了以前的一些包也要更新了,所以重新整了下

今天想用.Net Core控制台程序弄个多线程爬虫,因为我的一些公共的方法都是.Net Core写的,想复用结果遇到太多坑。。。

坑1:中文编码问题,.Net Core控制台程序中文乱码

解决:引入 System.Text.Encoding.CodePages 包并在Main方法开始时注册

//编码注册
            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

坑2:依赖注入问题

解决:参考dudu文章:http://www.cnblogs.com/dudu/p/5552293.html

坑3:配置文件问题,比如Mysql链接字符串,Redis链接字符串等都是在配置文件中读取

        static void Main(string[] args)
        {
            //编码注册
            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

            //配置文件
            var builder = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
            .AddEnvironmentVariables();
            IConfigurationRoot configuration = builder.Build();

            //依赖注入
            IServiceCollection services = new ServiceCollection();
            services.AddOptions();
            services.Configure<AppSettings>(configuration.GetSection("AppSettings")); //配置文件
            services.AddTransient<IArticleService, ArticleService>();
            services.AddTransient<MySQLConnection, MySQLConnection>();
            IServiceProvider serviceProvider = services.BuildServiceProvider();
            //解析
            GetContent(serviceProvider);

            //AddQueue(settingModel);
            Console.ReadKey();
        }

反正最后就是这样了,中文乱码、依赖注入、配置文件读取都解决了

有一些包的引用参考Web下的Startup.cs

大致的包参考下面的图片,引用时注意包的版本号

 

posted @ 2017-06-09 19:44  上古时期的码农  阅读(2421)  评论(0编辑  收藏  举报