前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >.NET Core 2.0发布了

.NET Core 2.0发布了

作者头像
乐百川
发布2018-01-09 10:32:37
1.2K0
发布2018-01-09 10:32:37
举报

.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查询语句。

代码语言:javascript
复制
var customers =
    from c in context.Customers
    where EF.Functions.Like(c.Name, "a%");
    select c;

对应的查询语句如下。

代码语言:javascript
复制
SELECT [c].[Id], [c].[Name]
FROM [Customers] AS [c]
WHERE [c].[Name] LIKE N'a%';

原生SQL中的字符串互操作

这是我认为很实用的一个特性。

代码语言:javascript
复制
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。

代码语言:javascript
复制
@page

<html>
    <body>
        <h2>The server-local time now is:</h2>

        <p>@DateTime.Now</p>
    </body>
</html>

在Razor Pages中也可以添加函数。

代码语言:javascript
复制
@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

代码语言:javascript
复制
<TargetFramework>netcoreapp2.0</TargetFramework>

如果原来项目的目标框架是.NET Framework,那么将其指定为大于等于.NET Framework 4.6.1的版本,例如net461

代码语言:javascript
复制
<TargetFramework>net461</TargetFramework>
更新项目引用

这里也需要根据项目的目标框架进行修改。这里我原来项目中的依赖包引用是这样的。

代码语言:javascript
复制
  <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,那么把这些替换成一个单独的元包即可。

代码语言:javascript
复制
<ItemGroup>
  <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" />
</ItemGroup>

如果目标框架是.NET Framework,那么这些依赖包不能修改,但是所有版本都应该修改为2.0.

代码语言:javascript
复制
<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,例如下面。

代码语言:javascript
复制
<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节点和属性。

代码语言:javascript
复制
<PackageTargetFallback>$(PackageTargetFallback);portable-net45+win8+wp8+wpa81;</PackageTargetFallback>

下面是修改之后的。

代码语言:javascript
复制
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
更新Program.cs中的主方法

主方法可以简化为以下的。

代码语言:javascript
复制
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,也需要进行相应的修改。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年08月16日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • .NET Core 2.0
  • Visual Studio 2017 15.3+
  • Entity Framework Core 2.0
    • .NET Standard 2.0支持
      • 改进的LINQ翻译
        • 原生SQL中的字符串互操作
        • ASP.NET Core 2.0
          • Razor Pages
            • 从1.1升级到2.0
              • 更新目标框架
              • 更新项目引用
              • 更新命令行工具版本
              • 重命名Package Target Fallback属性
              • 更新Program.cs中的主方法
          相关产品与服务
          命令行工具
          腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档