技术员联盟提供win764位系统下载,win10,win7,xp,装机纯净版,64位旗舰版,绿色软件,免费软件下载基地!

当前位置:主页 > 教程 > 服务器类 >

Amazing ASP.NET Core 2.0详解

来源:技术员联盟┆发布时间:2017-08-15 18:10┆点击:

  ASP.NET Core 的变化和发展速度是飞快的,当你发现你还没有掌握 ASP.NET Core 1.0 的时候, 2.0 已经快要发布了,目前 2.0 处于 Preview 1 版本,意味着功能已经基本确定,还没有学习过 ASP.NET Core 的同学可以直接从 2.0 开始学起,但是如果你已经掌握了 1.0 的话,那么你只需要了解在 2.0 中增加和修改的一些功能即可。

  每一次大版本的发布和升级,总会带给开发人员一些惊喜和令人兴奋的特性,有关 ASP.NET Core 本次的 2.0 版本的新特性,主要集中在几个部分上。

  SDK 的变化

  PS: 目前如果你想在VS中体验 ASP.NET Core 2.0 全部特性的话,你需要 VS 2017.3 预览版本。当然你可以使用 VS Core 来快速了解。

  .NET Core 2.0 Priview 的下载地址:

  https://www.microsoft.com/net/core/preview

  完成之后可以在 cmd 中使用以下命令查看版本。

Amazing ASP.NET Core 2.0详解 三联

  变化1:添加了如下图箭头所指新命令。

Amazing ASP.NET Core 2.0详解

  dotnet new razor

  dotnet new nugetconfig

  dotnet new page

  dotnet new viewimports

  dotnet new viewstart

  添加了这些新的cli命令。 其中 viewimports,viewstart 即为Razor视图中的_xxx.cshtml那两个文件.

  变化2: dotnet new xxx 将会自动还原 NuGet 包,不需要你再次进行 dotnet restore 命令了。

  G:\Sample\ASPNETCore2 > dotnet new mvc

  The template "ASP.NET Core Web App (Model-View-Controller)" was created successfully.

  This template contains technologies from parties other than Microsoft, see https://aka.ms/template-3pn for details.

  Processing post-creation actions...

  Running 'dotnet restore' on G:\Sample\ASPNETCore2\ASPNETCore2.csproj...

  Restore succeeded.

  *.csproj 项目文件

  在 2.0 中,当创建一个 MVC 项目的时候,生成的 csporj 项目文件如下:

Amazing ASP.NET Core 2.0详解

  其中,红色箭头部分为新增内容,我们依次来看一下:

  MvcRazorCompileOnPublish:

  在 1.0 版本中,如果我们需要在发布的时候编译 MVC 中的 Views 文件夹为DLL的话,需要引用

  Microsoft.AspNetCore.Mvc.Razor.ViewCompilation 这个 NuGet 包,而现在已经不需要了,这个功能已经默认的集成在了SDK中,只需要在csporj添加配置即可,在发布的时候将会自动打包 Views 文件夹中的 *.cshtml 文件为 DLL 程序集。

  PackageTargetFallback

  这个配置项是用来配置当前程序集支持的目标框架。

  UserSecretsId

  这个是用来存储程序中使用的机密,以前是存储在 project.json 文件中,现在你可以在这里进行配置了。

  有关 UserSecrets 的更多信息,可以查看我的这篇博客文章。

  MVC 相关包

  在 Core MVC 2.0 中,所有MVC相关的NuGet 包都被集成到了这个Microsoft.AspNetCore.All包中,它是一个元数据包,包含了大量的东西,其中包括:Authorization, Authentication, Identity, CORS, Localization, Logging, Razor, Kestrel 等,除了这些它还附加了 EntityFramework, SqlServer, Sqlite 等包。

  有些同学可能会觉得这样会引用了很多项目中使用不到的程序集,导致发布后的程序变得很庞大,不过我要告诉你不必担心,发布后的程序集不但不会变得很大,反而会小很多,因为 Microsoft 把所有的这些依赖全部都集成到了sdk中,也就是说当你安装sdk的之后,MVC相关的包就已经安装到了你的系统上。

  这样的好处是你不用担心更新Nuget包或者删除的时候,因为大量的版本不一致问题导致隐藏的冲突问题,另外一个好处就是,这样对于很多新手的话就很友好 2333,他们不需要知道他们什么情况下会从那个NuGet 包中获取自己需要的信息。

  现在,发布后的文件夹是如此简洁: 大小 4.3M

Amazing ASP.NET Core 2.0详解

  再贴个以前的 发布后的文件夹你们感受一下: 大小 16.5M

Amazing ASP.NET Core 2.0详解

  有些同学可能好奇他们把那些引用的 MVC 包放到哪里了,默认情况下他们位于这个目录:

  C:\Program Files\dotnet\store\x64\netcoreapp2.0

  新的 Program.cs 和 Startup.cs

  现在,当创建一个 ASP.NET Core 2.0 MVC 程序的时候,Program 和 Startup 已经发生了变化,他们已经变成了这样:

  Program.cs

  public class Program

  {

  public static void Main(string[] args)

  {

  BuildWebHost(args).Run();

  }

  public static IWebHost BuildWebHost(string[] args) =>

  WebHost.CreateDefaultBuilder(args)

  .UseStartup()

  .Build();

  }

  Startup.cs

  public class Startup

  {

  public Startup(IConfiguration configuration)

  {

  Configuration = configuration;

  }

  public IConfiguration Configuration { get; }

  public void ConfigureServices(IServiceCollection services)

  {

  services.AddMvc();

  }

  public void Configure(IApplicationBuilder app, IHostingEnvironment env)

  {

  if (env.IsDevelopment())

  {

  app.UseDeveloperExceptionPage();

  }

  else

  {

  app.UseExceptionHandler("/Home/Error");

  }

  app.UseStaticFiles();

  app.UseMvc(routes =>

  {

  routes.MapRoute(

  name: "default",

  template: "{controller=Home}/{action=Index}/{id?}");

  });

  }

  }