序言

在当前编程语言蓬勃发展与竞争的时期,对于我们.net从业者来说,.Net Core是风头正紧,势不可挡的.芸芸口水之中,不学习使用Core,你的圈内处境或许会渐渐的被边缘化.所以我们还是抽出一点点时间学学.net core吧.

那VS Code 可以编写,也可以调试Core本人也尝试啦下,但是感觉扯淡的有点多,还是使用宇宙第一开发工具VS2017吧.

由于本篇是core的开篇,所以就稍微啰嗦一点,从创建web项目开始,先说项目文件,再来说一说配置文件与IOC使用.

创建web项目及项目文件简介

关于web项目的创建,如果你创建不出来,自生自灭吧.点击右上角的x,拜拜.

从上往下说这个目录结构

1、launchSettings.json 启动配置文件,文件默认内容如下.

  1. {
  2. "iisSettings": { //使用IIS Express启动
  3. "windowsAuthentication": false, //是否启用windows身份验证
  4. "anonymousAuthentication": true, //是否启用匿名身份验证
  5. "iisExpress": {
  6. "applicationUrl": "http://localhost:57566/", //访问域名,端口
  7. "sslPort":
  8. }
  9. },
  10. "profiles": {
  11. "IIS Express": {
  12. "commandName": "IISExpress",
  13. "launchBrowser": true,
  14. "environmentVariables": {
  15. "ASPNETCORE_ENVIRONMENT": "Production" //环境变量,默认为开发环境(Development),预发布环境(Staging),生产环境(Production)
  16. }
  17. },
  18. "WebApplication1": { //选择本地自宿主启动,详见Program.cs文件。删除该节点也将导致Visual Studio启动选项缺失
  19. "commandName": "Project",
  20. "launchBrowser": true,
  21. "environmentVariables": {
  22. "ASPNETCORE_ENVIRONMENT": "Development"
  23. },
  24. "applicationUrl": "http://localhost:57567" //本地自宿主端口
  25. }
  26. }
  27. }

在vs的设计视图中也可以编辑,如下图,自己扣索下.

2、wwwroot和bower.json 静态资源文件夹与引入静态资源库包版本配置文件,自己打开看下

3、依赖项,这个里面有4种吧,一种是bower前端资源库,Nuget第三方,SDK,项目本身

4、Controllers,Views,这个不用介绍吧,mvc的2主.

5、appsettings.json :应用配置文件,类似于.net framework中的web.config文件

6、bundleconfig.json:打包压缩配置文件

7、Program.cs:里面包含一个静态Main文件,为程序运行的入口点

8、Startup.cs:这个默认为程序启动的默认类.

这里的配置文件与2个入口类文件是万物的根基,灵活多变,其中用我们值得学习了解的东西很多,这一章我不做阐述,后续章节再来补习功课,见谅,谨记.

.Net Core读取配置文件

这个是我第一次入手学习core时候的疑问,我先是按照.Net Framework的方法来读取配置文件,发现Core中根本没有System.Configuration.dll.那怎么读取配置文件呢?

那么如果要读取配置文件中的数据,首先要加载Microsoft.Extensions.Configuration这个类库.

首先看下我的默认配置文件,appsettings.json

  1. {
  2. "Logging": {
  3. "IncludeScopes": false,
  4. "LogLevel": {
  5. "Default": "Warning"
  6. }
  7. }
  8. }

读取他的第一种方式

  1. /// <summary>
  2. /// 获取配置节点对象
  3. /// </summary>
  4. public static T GetSetting<T>(string key, string fileName = "appsettings.json") where T : class, new()
  5. {
  6. IConfiguration config = new ConfigurationBuilder()
  7. .SetBasePath(Directory.GetCurrentDirectory())
  8. .Add(new JsonConfigurationSource { Path = fileName, Optional = false, ReloadOnChange = true })
  9. .Build();
  10. var appconfig = new ServiceCollection()
  11. .AddOptions()
  12. .Configure<T>(config.GetSection(key))
  13. .BuildServiceProvider()
  14. .GetService<IOptions<T>>()
  15. .Value;
  16. return appconfig;
  17. }
  1. public class Logging
  2. {
  3. public bool IncludeScopes { get; set; }
  4. public LogLevel LogLevel { get; set; }
  5. }
  6. public class LogLevel
  7. {
  8. public String Default { get; set; }
  9. }
  1. var result =GetSetting<Logging>("Logging");

这样即可,读取到配置文件的内容,并填充配置文件对应的对象Logging.

如果你有自定义的节点,如下

  1. {
  2. "Logging": {
  3. "IncludeScopes": false,
  4. "LogLevel": {
  5. "Default": "Warning"
  6. }
  7. },
  8. "Cad": {
  9. "a": false,
  10. "b": ""
  11. }
  12. }

与上面一样,首先定义对应的对象

  1. public class Cad
  2. {
  3. public bool a { get; set; }
  4. public string b { get; set; }
  5. }
  1. var result = GetSetting<Cad>("Cad");

有啦上面的方法很是简单,还有一种情况是你想有自己的配置文件myconfig.json,那也很简单,把上述方法的默认文件名改为myconfig.json即可!

除啦这个方法可以获取配置文件外,core在mvc中还有另外获取配置文件的方法,如下.

  1. IOptions<Cad> cadConfig;
  2. public HomeController(IOptions<Cad> config)
  3. {
  4. cadConfig = config;
  5. }
  6.  
  7. public IActionResult Index()
  8. {
  9. try
  10. {
  11. var result = cadConfig.Value;
  12. return View(result);
  13. }
  14. catch (Exception ex)
  15. {
  16. return View(ex);
  17. }
  18. }

就这样,用法也很简单.

但是如果配置文件中有的配置项需要你动态修改,怎么办呢,用下面的方法试试.

  1. /// <summary>
  2. /// 设置并获取配置节点对象
  3. /// </summary>
  4. public static T SetConfig<T>(string key, Action<T> action, string fileName = "appsettings.json") where T : class, new()
  5. {
  6. IConfiguration config = new ConfigurationBuilder()
  7. .SetBasePath(Directory.GetCurrentDirectory())
  8. .AddJsonFile(fileName, optional: true, reloadOnChange: true)
  9. .Build();
  10. var appconfig = new ServiceCollection()
  11. .AddOptions()
  12. .Configure<T>(config.GetSection(key))
  13. .Configure<T>(action)
  14. .BuildServiceProvider()
  15. .GetService<IOptions<T>>()
  16. .Value;
  17. return appconfig;
  18. }
  1. var c =SetConfig<Cad>("Cad", (p => p.b = "123"));

ok啦,自己试试吧,对配置文件的读取,我这里目前只做到这里,后续有新的好方法再来分享.

.Net Core中运用IOC

当然在.net framework下能够做依赖注入的第三方类库很多,我们对此也了然于心,但是在core中无须引入第三放类库即可做到.

  1. public interface IAmount
  2. {
  3. string GetMyBanlance();
  4. string GetMyAccountNo();
  5. }
  6.  
  7. public class AmountImp: IAmount
  8. {
  9. public string GetMyBanlance()
  10. {
  11. return "88.88";
  12. }
  13. public string GetMyAccountNo()
  14. {
  15. return "CN0000000001";
  16. }
  17. }

上面一个接口,一个实现,下面我们在Startup的ConfigureServices中把接口的具体实现注册到ioc容器中.

  1. public class Startup
  2. {
  3. // This method gets called by the runtime. Use this method to add services to the container.
  4. public void ConfigureServices(IServiceCollection services)
  5. {
  6. services.AddScoped<IAmount, AmountImp>();
  7. // Add framework services.
  8. services.AddMvc();
  9. }
  10. }
  1. public class HomeController : Controller
  2. {
  3. IAmount amount;
  4. public HomeController(IAmount _amount)
  5. {
  6. amount = _amount;
  7. }
  8.  
  9. public IActionResult Index()
  10. {
  11. try
  12. {
  13. var result = amount.GetMyAccountNo(); //结果为: "CN0000000001"
  14. return View();
  15. }
  16. catch (Exception ex)
  17. {
  18. return View(ex);
  19. }
  20. }
    }

这里呢,我只做一个简单的示例,以供我们熟悉了解core,后续章节,如果运用的到会深入.

总结

入手.net core还是需要有很多新的认识点学习的,不是一两篇博文可以涵盖的,我们自己需要多总结思考学习.

这里我把一些的点,贴出来,希望对想入手core的同学有所帮助.如有志同道合者,欢迎加左上方群,一起学习进步.

来吧学学.Net Core之项目文件简介及配置文件与IOC的使用的更多相关文章

  1. ASP.NET Core之项目文件简介及配置文件与IOC的使用

    原文地址:https://www.cnblogs.com/knowledgesea/p/7079880.html 序言 在当前编程语言蓬勃发展与竞争的时期,对于我们.net从业者来说,.Net Cor ...

  2. .NET Core 1.0、ASP.NET Core 1.0和EF Core 1.0简介

    .NET Core 1.0.ASP.NET Core 1.0和EF Core 1.0简介 英文原文:Reintroducing .NET Core 1.0, ASP.NET Core 1.0, and ...

  3. C#设计模式总结 C#设计模式(22)——访问者模式(Vistor Pattern) C#设计模式总结 .NET Core launch.json 简介 利用Bootstrap Paginator插件和knockout.js完成分页功能 图片在线裁剪和图片上传总结 循序渐进学.Net Core Web Api开发系列【2】:利用Swagger调试WebApi

    C#设计模式总结 一. 设计原则 使用设计模式的根本原因是适应变化,提高代码复用率,使软件更具有可维护性和可扩展性.并且,在进行设计的时候,也需要遵循以下几个原则:单一职责原则.开放封闭原则.里氏代替 ...

  4. [04]ASP.NET Core Web 项目文件

    ASP.NET Core Web 项目文件 本文作者:梁桐铭- 微软最有价值专家(Microsoft MVP) 文章会随着版本进行更新,关注我获取最新版本 本文出自<从零开始学 ASP.NET ...

  5. Logback简介及配置文件logback.xml详解

    logback简介及配置文件说明 @author:wangyq @date:2021年3月31日 logback简介 ​ Logback是由log4j创始人设计的另一个开源日志组件,官方网站: htt ...

  6. ASP.NET Core实现类库项目读取配置文件

    前言 之前继续在学习多线程方面的知识,忽然这两天看到博问中有个园友问到如何在.net core类库中读取配置文件,当时一下蒙了,这个提的多好,我居然不知道,于是这两天了解了相关内容才有此篇博客的出现, ...

  7. .NET平台开源项目速览(20)Newlife.Core中简单灵活的配置文件

    记得5年前开始拼命翻读X组件的源码,特别是XCode,但对Newlife.Core 的东西了解很少,最多只是会用用,而且用到的只是九牛一毛.里面好用的东西太多了. 最近一年时间,零零散散又学了很多,也 ...

  8. [.Net Core] 简单使用 Mvc 内置的 Ioc

    简单使用 Mvc 内置的 Ioc 本文基于 .NET Core 2.0. 鉴于网上的文章理论较多,鄙人不才,想整理一份 Hello World(Demo)版的文章. 目录 场景一:简单类的使用 场景二 ...

  9. [.Net Core] 简单使用 Mvc 内置的 Ioc(续)

    简单使用 Mvc 内置的 Ioc(续) 本文基于 .NET Core 2.0. 上一章<[.Net Core] 简单使用 Mvc 内置的 Ioc>已经对日常 Mvc 中的 Ioc 的简单用 ...

随机推荐

  1. SSM(SpringMVC Spring Mybatis)框架整合搭建

    1.新建一个web工程. 2.首先看一下整体的框架结构: 3.将ssm框架搭建所需要的jar包复制到lib目录下 3.需要配置各个配置文件. 1)配置web.xml文件: <?xml versi ...

  2. [原创]SVN使用

    在企业中,SVN环境,由企业已经搭建好,并提供相关技术支持.对于个人,如果想在个人PC上实现版本管理,亦可以实现.安装Visual SVN及其相关工具 如何使用,可见下链接 http://www.cn ...

  3. .NET Core 添加Java 服务引用(WebService) 曲折历程(二)

    简介: 以为添加完插件后获取内容会一帆风顺,认真你就错了...,安装之后异步结果各种Error错误,获取不到任何信息. 在这里给大家个建议,查资料还是要用微软必应:https://cn.bing.co ...

  4. bootstrap selectpicker控件select下拉框动态数据无法回显的问题

    有关于selectpicker下拉框数据回显的问题,当查看一个对象的属性的时候, 发现有关于selectpicker的下拉框并没有将返回的数据进行回显,显示的都是请选择, 经查证,当查看属性的时候,他 ...

  5. 百度语音+react+loopback实现语音合成返回播放

    1.在百度语音中创建自己的项目,需要拿到APP_ID.API_KEY.SECRET_KEY. 2.loopback端提供接口服务,在./boot目录下新建root.js文件,编写不依赖模型的自定义接口 ...

  6. 通过 ContentResolver 读取联系人信息

    1.首先动态获取 读取联系人信息权限    <1>配置文件中声明对应权限 ) } ] == PackageManager.PERMISSION_GRANTED) { readContact ...

  7. markdown改变字体颜色和大小

    markdown中改变字体颜色与大小方法同html 先看例子 <font face="黑体">我是黑体字</font> 我是黑体字 <font fac ...

  8. python文本读写数据

    # 写方法1 f = open('tmp.txt','w') f.write('hello world') f.close() # 写方法2 with open('tmp.txt','w') as f ...

  9. Ubuntu 配置安装PCL

    Ubuntu 配置安装PCL 之前一直在Mac下开发,现在入手Ubuntu,也借此学习一下Linux下的源码编译安装过程. PCL简介 PCL(Point Cloud Library)是在吸收了前人点 ...

  10. 杭电1506 java

    求最大子矩阵面积(dp) import java.util.*; public class Main1{ public static void main(String[] args) { Scanne ...