.NET Core 2.0发布了
2017-08-16 18:22
435 查看
.NET Core 2.0
长久以来,.NET框架一直因为只能在Windows系统上运行而被人黑。所以微软重写了一个跨平台的.NET,这就是.NET Core。现在.NET Core已经更新到2.0了。如果有兴趣的话可以看看官方的更新日志。总之,所有使用.NET Core的同学, 最好都更新到最新版本,在性能、API实现、命令友好度方面都有改进。Visual Studio 2017 15.3+
相应的,Visual Studio 2017也更新了,详细更新情况请看更新日志,这个有中文版的,很良心。如果希望在新VS中使用.NET Core 2.0,还需要安装单独的.NET Core 2.0 SDK,安装完成之后,VS才会识别到新的.NET Core 2.0 SDK。Entity Framework Core 2.0
微软的ORM框架Entity Framework也得到了更新,这里是官方的更新日志。在Entity Framework Core 2.0中,带来了一些我认为很实用的更新。.NET Standard 2.0支持
现在EF Core 2.0也支持了.NET Standard 2.0。这意味将来我们可以在.NET Framework、Mono、Xamarin、UWP等多种平台上使用一致的API。改进的LINQ翻译
举个例子,下面的LINQ会被翻译成对应的LIKE查询语句。var customers = from c in context.Customers where EF.Functions.Like(c.Name, "a%"); select c;
对应的查询语句如下。
SELECT [c].[Id], [c].[Name] FROM [Customers] AS [c] WHERE [c].[Name] LIKE N'a%';
原生SQL中的字符串互操作
这是我认为很实用的一个特性。var city = "Redmond"; using (var context = CreateContext()) { context.Customers.FromSql($@" SELECT * FROM Customers WHERE City = {city}"); }
还有一些特性我没介绍,直接看官方更新日志吧。
ASP.NET Core 2.0
ASP.NET Core 2.0 的详细更新情况,请看官方博客。Razor Pages
在新版本中引入了一种新的技术 Razor Pages,它在某些更侧重编写页面的场景中有良好的应用。如果项目中启用了MVC的话,那么Razor Pages也自动启用了。请看官方的例子,下面是一个Razor Pages,它和普通的Razor语法的MVC视图页面很相似,只不过顶部使用
@page指令标识这是一个单独的Razor Pages。
@page <html> <body> <h2>The server-local time now is:</h2> <p>@DateTime.Now</p> </body> </html>
在Razor Pages中也可以添加函数。
@page @functions { public string FormatDate(DateTime theTime) { return theTime.ToString("d"); } } <html> <body> <h2>The server-local time now is:</h2> <p>@FormatDate(DateTime.Now)</p> </body> </html>
还可以继承和使用PageModel,利用到MVVM模式的优势。详细情况可以参考官方文档,这里不再赘述。
除了Razor Pages,新版本还更新了新的项目模板,DbContext的缓冲池,以及不需要改动代码的Application Insights监测。详情请参考官方文档。
从1.1升级到2.0
我自己也做了一个ASP.NET Core小程序玩玩,正好借这个机会升级到2.0 ,这里参考了官方的迁移指南。在迁移之前,确保正确安装了.NET Core 2.0 。更新目标框架
首先先升级目标框架,这需要修改csproj文件。如果原来项目的目标框架是.NET Core ,那么将其升级为
netcoreapp2.0。
<TargetFramework>netcoreapp2.0</TargetFramework>
如果原来项目的目标框架是.NET Framework,那么将其指定为大于等于.NET Framework 4.6.1的版本,例如
net461。
<TargetFramework>net461</TargetFramework>
更新项目引用
这里也需要根据项目的目标框架进行修改。这里我原来项目中的依赖包引用是这样的。<ItemGroup> <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.0.0" /> <PackageReference Include="Microsoft.AspNetCore" Version="1.1.1" /> <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.2" /> <PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="1.1.1" /> <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.1.1" /> <PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="1.1.0" /> </ItemGroup>
如果目标框架是.NET Core,那么把这些替换成一个单独的元包即可。
<ItemGroup> <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" /> </ItemGroup>
如果目标框架是.NET Framework,那么这些依赖包不能修改,但是所有版本都应该修改为2.0.
<ItemGroup> <PackageReference Include="Microsoft.AspNetCore" Version="2.0.0" /> <PackageReference Include="Microsoft.AspNetCore.Authentication.Cookies" Version="2.0.0" /> <PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="2.0.0" /> <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="2.0.0" /> <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.0" /> <PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="2.0.0" PrivateAssets="All" /> <PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.0.0" /> <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.0.0" PrivateAssets="All" /> <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.0.0" /> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.0.0" PrivateAssets="All" /> <PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="2.0.0" /> <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.0.0" PrivateAssets="All" /> </ItemGroup>
更新命令行工具版本
将csproj文件中所有
<DotNetCliToolReference />节点的
version属性更新到
2.0.0,例如下面。
<ItemGroup> <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" /> <DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="2.0.0" /> <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" /> </ItemGroup>
重命名Package Target Fallback属性
将PackageTargetFallback节点和值修改为
AssetTargetFallback节点和属性。
<PackageTargetFallback>$(PackageTargetFallback);portable-net45+win8+wp8+wpa81;</PackageTargetFallback>
下面是修改之后的。
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
更新Program.cs中的主方法
主方法可以简化为以下的。public class Program { public static void Main(string[] args) { BuildWebHost(args).Run(); } public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>() .Build(); }
之后,如果项目中使用了ASP.NET的权限/认证 API,也需要进行相应的修改。
相关文章推荐
- 微软Build 2017首日主角AI 同时发布.NET Core 2.0 Preview 1
- .NET Core 2.0 Preview2 发布汇总
- .NET Core 2.0 Preview 1发布下载和文档
- 将本地web项目发布到ubuntu上并运行 第一个本地的.net core2.0项目
- .NET Core 2.0 正式发布
- CentOS 7下发布.net core 2.0 过程
- .Net Core 2.0 + CentOS 7 + Nginx(编译发布)
- .NET Core 2.0 Preview2 发布汇总
- NET CORE 2.0发布在IIS上提示502.5错误
- .NET Core 2.0版本预计于2017年春季发布
- net Core 2.0应用程序发布到IIS
- .NET Core 2.0 正式发布信息汇总
- .NET Core 2.0版本预计于2017年春季发布
- .NET Core 2.0 正式发布信息汇总
- .NET Core 2.0 正式发布信息汇总
- .NET Core 2.0 Preview2 发布汇总
- 重磅 .NET Core 2.0正式版终于发布了
- .NET Core 2.0 Preview2 发布汇总
- .net Core 2.0应用程序发布到IIS上注意事项
- [分享]发布自己C#开发的ReSharper2.0 for VS2003/2005 注册机