序
speed芯的变化和发展速度非常快。当你发现自己还没有掌握ASP.NET Core 1.0的时候,2.0马上就要发布了。目前2.0处于Preview 1版本,意味着功能已经基本确定。没有学过ASP.NET Core的同学可以直接从2.0学习,但是如果你已经掌握了1.0,你只需要知道2.0中增加和修改的一些功能。
大版本的每一次发布和升级,总会给开发者带来一些惊喜和激动人心的特性。ASP.NET核心2.0版本的新功能主要集中在几个部分。
软件开发工具包更改
目前,如果你想在VS中体验ASP.NET酷睿2.0的所有功能,你需要一个VS 2017.3的预览版。当然可以用VS Core快速了解。
下载地址。NET核心2.0隐私:https://www.microsoft.com/net/core/preview
完成后,您可以在cmd中使用以下命令来查看版本。
更改1:添加了下图中箭头所示的新命令。
dotnet new razor dotnet new nugetconfigdotnet new page dotnet new view importsdotnet new view start添加了这些新的cli命令。其中,viewimports、viewstart是Razor视图中的两个文件_xxx.cshtml。
变化二:Dotnet New XXX会自动恢复NuGet包,所以不需要再次执行dotnet restore命令。
g : Sample aspnetcore 2 dot net新mvcThe模板' ASP。已成功创建网络核心网络应用程序(模型-视图-控制器)。此模板包含来自微软以外的技术,详情请见https://aka.ms/template-3pn。处理创建后操作.在g:上运行“dotnet restore ” sample aspnetcore 2 aspnetcore 2 . csproj.还原成功。* .csproj项目文件
在2.0中,创建MVC项目时,生成的csporj项目文件如下:
其中,红色箭头部分是新增内容,我们依次来看一下:
MvcRazorCompileOnPublish:
在1.0版本中,如果发布时需要将MVC中的Views文件夹编译为DLL,需要参考微软的NuGet包。aspnetcore . MVC . razor . view composition,现在已经不需要了。默认情况下,该功能已集成到SDK中。您只需要在csporj中添加配置,并且*。发布时,“视图”文件夹中的cshtml文件将自动打包为DLL程序集。
PackageTargetFallback
此配置项用于配置当前程序集支持的目标框架。
用户密码
这用于存储程序中使用的秘密。它以前存储在project.json文件中。现在您可以在这里配置它。
有关用户秘密的更多信息,请查看我的博客文章。
MVC相关包
package reference Include=' Microsoft。所有'版本=' 2 . 0 . 0-预览1-最终版本'/
在Core MVC 2.0中,所有与MVC相关的NuGet包都集成到这个Microsoft中。AspNetCore.All package,它是一个元数据包,包含了很多东西,包括:授权、认证、身份、CORS、本地化、日志、Razor、红隼等。除此之外,还附加了实体框架、SQL server、SQLite等包。
有些同学可能会认为这是指很多项目中没有用到的程序集,会导致发布的程序变得很大,但是我想告诉大家不要担心,发布的程序集不会变得很大,反而会小很多,因为微软已经把这些依赖项都集成到了sdk中,也就是说在你安装了sdk之后,你的系统上已经安装了MVC相关的包。
这样做的好处是,在更新或删除NuGet包时,不必担心大量版本不一致导致的隐藏冲突。另一个优点是它对许多新手很友好,他们不需要知道在什么情况下他们会从那个Nuget包中获得他们需要的信息。
现在,发布的文件夹是如此简洁:大小为4.3M
再贴个以前的发布后的文件夹你们感受一下: 大小16.5米
有些同学可能好奇他们把那些引用的手动音量调节包放到哪里了,默认情况下他们位于这个目录:
C: 程序文件 dotnet store x64 netcoreapp 2.0
新的Program.cs和Startup.cs
现在,当创建一个ASP。网核心2.0 MVC程序的时候,程序和启动已经发生了变化,他们已经变成了这样:
Program.cs
公共类程序{公共静态void Main(字符串[]参数){ BuildWebHost(参数)} .run();}公共静态IWebHost BuildWebHost(字符串[]个参数)=WebHost .CreateDefaultBuilder(参数).UseStartupStartup().build();}Startup.cs
公共类启动{公共启动(图标配置)配置){配置=配置}公共图标配置{ get } public void ConfigureServices(IServiceCollection services){ services .AddMvc();}公共void Configure(IApplicationBuilder应用程序,ihostingenvirmentenv){ if(env .IsDevelopment()) { app .usedeveloper异常页();} else { app .UseExceptionHandler('/Home/Error ');}应用程序.UseStaticFiles();应用程序.UseMvc(routes={ routes .MapRoute(名称: '默认',模板: ' {控制器=Home }/{操作=Index }/{ id?}');});}}可以发现,新的Program.cs中和Startup.cs中的内容已经变得很简单了,少了很多比如appsetting.json文件的添加,日志中间件,Kertrel,HostingEnvironment等,那么是怎么回事呢?其他他们已经被集成到了网络主持人.CreateDefaultBuilder这个函数中,那么我们跟进源码来看一下内部是怎么做的。
网络主持人.CreateDefaultBuilder
下面是网络主持人.CreateDefaultBuilder这个函数的源码:
公共静态IWebHostBuilder CreateDefaultBuilder(string[]args){ var builder=new WebHostBuilder().UseKestrel().UseContentRoot(目录. GetCurrentDirectory()).ConfigureAppConfiguration((宿主上下文,config)={ var env=hostingContext .主机环境;配置AddJsonFile('appsettings.json ',optional: true,reloadOnChange: true).AddJsonFile($'appsettings .{env .环境名称}。json ',optional:为真,重新加载更改:为真);if (env .is development()){ var appAssembly=Assembly .加载(新程序集名称(环境.应用程序名称));if (appAssembly!=null) { config .AddUserSecrets(appAssembly,可选: true);} }配置AddEnvironmentVariables();if (args!=null) { config .AddCommandLine(args);} }) .配置日志记录((宿主上下文,日志记录)={日志记录.使用配置(托管上下文.配置。GetSection('日志');日志记录AddConsole();日志记录AddDebug();}) .UseIISIntegration().UseDefaultServiceProvider((上下文,选项)={选项.ValidateScopes=上下文托管环境。is发展();}) .配置服务(服务={服务.addtransitionfiguratops skestrelservroptions,kesstrelserveropionsetup();});返回生成器;}可看到,新的方式已经隐藏了很多细节,帮助我们完成了大部分的配置工作。但是你知道怎么样来自定义这些中间件或者配置也是必要的技能之一。
appsettings.json的变化
在appsettings.json中,我们可以定义红隼相关的配置,应用程序会在启动的时候使用该配置进行卡斯特尔的启动。
{“红隼”: {“端点”: {“本地主机”: {“地址”: ' 127。0 .0 .1 ','端口' : '9000' },'本地主机Https ' : { '地址' : ' 127。0 .0 .1 ','端口' : '9001 ','证书' : 'Https' } } }以上配置内容配置了Kertrel启动的时候使用的本地地址和端口,以及在生产环境需要使用的HTTPS的配置项,通常情况下关于HTTPS的节点配置部分应该位于appsettings .Production.json文件中。
现在,dotnet run将在启动时同时监听端口9000和9001。
日志中的更改
ASP.NET核心2.0中日志的变化非常喜人,因为它现在不是MVC中间件配置的一部分,而是Host的一部分。这句话似乎有点别扭。这意味着您可以记录在较低级别生成的一些错误消息。
现在,您可以像这样扩展日志配置。
公共静态iweb主机构建web host(字符串[] args)=webhost。createdefaultbuilder (args)。usestartupstartup()。配置日志记录(工厂={您的配置})。build();新的剃刀页
ASP.NET核心2.0引入的另一个令人兴奋的特性是剃刀页面。它提供了另一种方法,使您在开发网页时更沉浸式地编程,或称为以页面为中心。嗯.这有点像以前的Web Form Page,它属于MVC框架,但是它们没有Controller。
您可以使用dotnet new razor命令创建一个新的Razor Pages类型的应用程序。
Razor Pages的cshtml页面代码可能如下所示:
@page@{ var message='你好,世界!';} html body p @ message/p/body/html razor页面,页面必须有@page标记。它们也可能有一个*.cshtml.cs的类文件,对应于与页面相关的一些代码。和网页表单很像吗?
有些学生可能会问,没有控制器如何布线?事实上,它们在文件夹的物理路径中导航,例如:
更多关于剃须刀页面的信息可以在这里找到:https://docs.microsoft.com/en-us/aspnet/core/razor-pages
摘要
可以看到,ASP.NET Core 2.0给我们的开发过程带来了很多便利和帮助,包括Program的改进,包括与MVC相关的NuGet包的集成,包括appsetting.json的服务器配置,以及令人惊叹的Razor Page。不能等正式版发布吗?如果你期待,点击【推荐】让我知道~ 2333.
如果你对ASP.NET CORE感兴趣,可以关注我,我会定期在博客分享我的学习经验。
以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。