电脑装Visual Studio2017,并升级版本。启动一个.net core 的项目。

NET Core基本介绍

1.1 什么是ASP.NET Core

ASP.NET Core 是一个全新的开源、跨平台框架,可以用它来构建基于网络连接的现代云应用程序,比如:Web 应用,IoT(Internet Of Things,物联网)应用和移动后端等。ASP.NET Core可以运行在 .NET Core 或完整的 .NET Framework 之上,其架构为发布到云端或本地运行的应用提供了一个最佳的开发框架,由开销很小的模块化组件构成,这就保持了你构造解决方案的灵活性。你可以跨平台地在Windows、Mac和Linux等设备上开发和运行你的 ASP.NET Core 应用。ASP.NET Core 的源代码已经在 GitHub上托管。

1.2 ASP.NET Core的改进

1)    在统一的方案中构建Web UI 和 Web API

2)    集成现代客户端开发框架和工作流

3)    以云就绪环境为基础的配置系统

4)    内置依赖注入

5)    全新、轻量级、模块化的HTTP请求管道

6)    在IIS或在自己托管进程中托管应用程序的能力。

7)    以.NET Core为基础,支持并行应用版本控制。

8)    完全以 NuGet 程序包方式分发

9)    一组全新的工具,简化现代Web 开发

10)  在Windows、Mac和Linux等设备上开发和运行 ASP.NET应用

11)  开放源代码和社区聚焦

1.3 ASP.NET Core 项目解读

如上图:一个ASP.NET Core应用其实就是一个简单的控制台应用程序,只是它在Main方法中创建了一个 Web 服务器而已,

using System.IO;
using Microsoft.AspNetCore.Hosting; namespace ProgrammersLiveShow
{
/// <summary>
/// 系统初始化信息
/// </summary>
/// 修改记录:
public class Program
{
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build(); host.Run();
}
}
}

Main 使用一个遵循生成器模式的 WebHostBuilder来创建Web应用程序宿主。生成器具有定义web服务器(UseKestrel)和指定启动类(UseStartup<Startup>())的方法。 上述示例使用的是 Kestrel Web 服务器,但你可以指定其他类型的Web 服务器。在下一节中将展示更多 UseStartup 相关的信息。WebHostBuilder 提供了大量的选项方法,包括指定宿主为 IIS 和 IIS Express 服务器的 UseIISIntegration,指定内容根目录的 UseContentRoot等。其中Build 和Run方法用于构建 IWebHost的实例,它将被用来挂载应用并开始监听到来的HTTP请求。

Startup类:

WebHostBuilder上的Startup方法用来指定你的应用程序的启动类。

该类是定义请求处理管道的地方,也是配置应用需要的服务的地方。Startup类必须是public的,而且必须包含ConfigureServices(IServiceCollection services)和Configure(IApplicationBuilder app)方法。

a)     ConfigureServices  定义应用程序中用到的服务(比如:ASP.NET MVC Core 框架,Entity Framework Core,Identity等等)

b)     Configure     定义请求处理管道中的中间件

Startup 类的 执行顺序:构造 -> configureServices->configure

详情请参考:Startup 和 Middleware(中间件),总结的很不错。

project.json

{
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.0",
"type": "platform"
},
"Microsoft.AspNetCore.Diagnostics": "1.0.0",
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
"Microsoft.Extensions.Logging.Console": "1.0.0"
},
"tools": {
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
},
"frameworks": {
"netcoreapp1.0": {
"dependencies": {
"Pls.Service": {
"target": "project"
}
},
"imports": [
"dotnet5.6",
"portable-net45+win8"
]
}
},
"buildOptions": {
"emitEntryPoint": true,
"preserveCompilationContext": true
},
"runtimeOptions": {
"configProperties": {
"System.GC.Server": true
}
},
"publishOptions": {
"include": [
"wwwroot",
"Views",
"appsettings.json",
"web.config",
"Areas",
"nlog.config"
],
"exclude": [ "bin" ]
}
}

具体的解释请看 project.json 引用(中文版的适合英语不好的人翻翻看)。我挑几个上面用到的解释解释:

  1. dependencies:依赖项,定义项目的包依赖项的一个对象,此对象的每个键是包名称,每个值包含版本信息。有关详细信息,请参阅 NuGet 文档站点上的 依赖项解析文章,类型是Object。
  2. tools:定义用作当前项目工具(而不是用作引用)的包依赖项的一个对象。 此处定义的包可用于生成过程中运行的脚本,但不可访问项目自身的代码,类型是Object。
  3. frameworks:框架,指定此项目支持的框架,如 .NET Framework 或通用 Windows 平台 (UWP)。 必须是有效的目标框架名字对象 (TFM)。 每个值都是一个对象,可以包含特定于此框架的信息以及以下各部分中的属性,类型是Object
  4. target:限制依赖项以仅匹配 project 或 package,类型是String
  5. buildOptions:其属性控制编译各个方面的一个对象。 下面列出了有效属性。 也可以按框架部分中所述目标框架进行指定,类型是Object。
  6. runtimeOptions:指定在初始化期间向运行时提供的参数,类型是Object。
  7. configProperties:包含用于配置运行时和框架的配置属性,类型是Object。
  8. System.GC.Server:若要启用服务器垃圾回收,则为 true;否则为 false。 默认值为 false
  9. emitEntryPoint:若要创建可执行文件,则为 true;否则为 false。 默认值为 false
  10. preserveCompilationContext:若要保留引用程序集和其他上下文数据以实现运行时编译,则为 true;否则为 false。 默认值为 false
  11. publishOptions:包含编译配置的属性的一个对象,类型是 Object。
  12. include:包含文件以及文件夹,类型是String 或带有通配模式的 String[]。
  13. exclude:指定要从生成中排除的文件,类型是String 或带有通配模式的 String[]。

.net core项目初建的更多相关文章

  1. vscode 创建.net core项目初体验

    微软的virtual studio编辑器那是宇宙第一大编辑器,可惜就是太笨重,遇到性能差一些的电脑设备,简直无法快速的编辑项目. 而vs code编辑器轻便易用,想要编辑哪种项目,只需扩展插件就OK, ...

  2. 【无私分享:ASP.NET CORE 项目实战(第十三章)】Asp.net Core 使用MyCat分布式数据库,实现读写分离

    目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 MyCat2.0版本很快就发布了,关于MyCat的动态和一些问题,大家可以加一下MyCat的官方QQ群:106088787.我 ...

  3. 【无私分享:ASP.NET CORE 项目实战(第十章)】发布项目到 Linux 上运行 Core 项目

    目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 ASP.Net Core 给我们带来的最大的亮点就是跨平台,我在我电脑(win7)上用虚拟机建了个 CentOS7 ,来演示下 ...

  4. 初建FreeMarker工程

    初建FreeMarker工程 ——@梁WP 背景:听说freemarker可以用来写页面的组件,热衷于编写可重用代码的我,迫不及待地研究了freemarker,不过,在写组件之前,还是先研究一下fre ...

  5. 发布项目到 Linux 上运行 Core 项目

    发布项目到 Linux 上运行 Core 项目 目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 ASP.Net Core 给我们带来的最大的亮点就是跨平台,我在我电脑(win ...

  6. yoeman构建Asp.net core项目并且实现分层

    在Mac上开发使用yoeman构建Asp.net core项目并且实现分层引用 1.Yoeman? yoeman是一个自动化脚手架工具.它提供很多generator,generator相当于Visua ...

  7. 在IIS上部署你的ASP.NET Core项目

    概述 与ASP.NET时代不同,ASP.NET Core不再是由IIS工作进程(w3wp.exe)托管,而是使用自托管Web服务器(Kestrel)运行,IIS则是作为反向代理的角色转发请求到Kest ...

  8. 使用VsCode编写和调试.NET Core项目

    ​ 本来我还想介绍以下VSCode或者donet core,但是发现都是废话,没有必要,大家如果对这个不了解可以直接google这两个关键字,或者也根本不会看我这边文章. ​ 好直接进入主题了,本文的 ...

  9. 打造自己的.NET Core项目模板

    前言 每个人都有自己习惯的项目结构,有人的喜欢在项目里面建解决方案文件夹:有的人喜欢传统的三层命名:有的人喜欢单一,简单的项目一个csproj就搞定.. 反正就是萝卜青菜,各有所爱. 可能不同的公司对 ...

随机推荐

  1. 三:理解Page类的运行机制(例:在render方法中生成静态文件)

    我这里只写几个常用的事件1.OnPreInit:此事件后将加载个性化信息和主题2.OnInit:初始化页面中服务器控件的默认值但控件的状态没有加载,没有创建控件树3.OnPreLoad:控件完成状态和 ...

  2. Vue笔记:在项目中使用 SCSS

    背景概述 1. CSS预处理器 css预处理器定义了一种新的编程语言,编译后成正常的CSS文件.为CSS增加一些编程的特性,无需考虑浏览器的兼容问题,让CSS更加简洁,适应性更强,可读性更佳,更易于代 ...

  3. JDK8简化if-else

    简化if-else 1234567891011 User user = ...if (user != null) { String userName = user.getUserName(); if ...

  4. 深度学习在CTR预估中的应用

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由鹅厂优文发表于云+社区专栏 一.前言 二.深度学习模型 1. Factorization-machine(FM) FM = LR+ e ...

  5. list双向链表容器(常用的方法总结)

    特别注意,由于list对象的结点并不要求在一段连续的内存中,所以,对于迭代器,只能通过++或者--的操作将迭代器移动到后继或者前驱结点元素处.而不能对迭代器进行+n或者-n的操作,这点与vector等 ...

  6. 未能找到类型或命名空间名List

    解决方法添加引用using System.Collections.Generic;

  7. [android] WebView与Js交互

    获取WebView对象 调用WebView对象的getSettings()方法,获取WebSettings对象 调用WebSettings对象的setJavaScriptEnabled()方法,设置j ...

  8. iOS: Designated Initializer(指定初始化函数)

    偶然间看到“ Designated Initializer”一词,心里一惊,这是什么东西,怎么没听说过?难道是我道行太浅?真的是这样?(好伤心啊)一阵子我怀疑之后,果断上网查了一下这个 Designa ...

  9. java的锁机制——synchronized

    一段synchronized的代码被一个线程执行之前,他要先拿到执行这段代码的权限,在java里边就是拿到某个同步对象的锁(一个对象只有一把锁): 如果这个时候同步对象的锁被其他线程拿走了,他(这个线 ...

  10. JavaOne 2016主旨演讲畅谈Java近期及远期规划

    在 JavaOne 2016 主题演讲开场,来自 Oracle 的 Java 产品管理负责人 Sharat Chander 指出 Java 盛行于个人和工作的日常生活各个领域,无论是大数据.物联网甚至 ...