.NET Core 1.1发布公告

[原文发表地址]:  Announcing .NET Core 1.1

[原文发表时间]: November 16, 2016

我们非常激动地宣布.NET Core 1.1 RTM发布了,这是第一个发布的当前版本。现在,你可以在Visual Studio 2015, Visual Studio 2017 RC, Visual Studio Code 和Visual Studio Mac版中创建 .NET Core 1.1的应用程序。

我们在发布的1.1版本中实现了如下改进:

  • .NET Core: 添加了发行版,提高了性能
  • ASP.NET Core:提高了对 Kestrel和 Azure的支持和效率
  • EF Core:支持Azure和SQL 2016

简讯 谷歌云正在加入 .NET Foundation技术指导组。欢迎谷歌!

你可以在.NET Core 1.1发布说明中了解到所有.NET Core详细的更新。这是三周前发布的 .NET Core 1.1 Preview 1的一个更新版。

安装

你可以从.NET Core下载页面去安装最新的版本。.NET Core是发布的当前版本。请确保点击了“当前”按钮来查看.NET Core1.1的下载链接。

发行

添加了对以下OS的支持:

  • Linux Mint 18
  • OpenSUSE 42.1(服务器架设 42.1)
  • Mac操作系统 10.12(也增加了.NET Core 1.0)
  • Windows Server 2016 (也增加了.NET Core 1.0)

你可以在.NET Core 1.1发布说明中看到完整的支持发行的列表。

 

文档 .NET Core文档已经更新了这次发布的版本,并且我们将会持续更新。同时,我们也正在把图片和内容更新到.NET Core 文档中, 以使文档更引人入胜和更容易被使用。 ASP.NET CoreEntity FrameworkC#VB文档作为这次发布的一部分被移到了网站docs.microsoft.comF#文档是几个月前被添加进来的。

网站docs.microsoft.com上的文档开放了源代码。你可以通过提问题或者在GitHub里工作来帮我们变得更好。可以从dotnet/docsaspnet/docs上开始。

性能

最近,在 TechEmpower上有人告诉我们带有Kestrel 的ASP.NET Core 1.1被TechEmpower评为最快的主流全栈式web框架。这真是一个很好的消息。

我们为.NET Core 1.1版本的公共语言运行库采用了叫做按配置文件优化(PGO)的性能优化技术。.NET框架已经使用这个技术很多年了,但是我们还没有给.NET Core使用这个技术。之前发布的.NET Core 1.1 Preview 1版本也没有包含这一技术。

按配置文件优化(PGO)根据所检测过程中所记录的应用程序信息优化C++编译器生成的二进制文件。我们把这一过程叫“培训”。PGO记录的信息包括,在二进制文件里使用了哪些代码路径以及使用的顺序。这次的版本发布,我们用简单的“Hello World”应用程序来进行培训。

在我们的实验室,我们发现通过PGO优化, ASP.NET的 MusicStore应用程序性能提高了15%。而且我们认为这个改进也可以代表其它网络应用程序。我们也希望,通过增加大批应用程序的培训,会有更大的改进。

对于Linux和mac操作系统,我们编译了带有Clang/LLVM的核心公共语言运行库。我们计划在下次的版本发布中使用Clang版本的 (PGO)。初步观察Clang PGO的结果表明我们是会从中获益的。

应用程序接口(API)

在 .NET Core 1.1中有1380个新的应用程序接口。许多新添加的应用程序接口可以支持产品本身,包括读Portable PDB,.NET Core 1.1可以支持.NET标准1.6.

在2017年发布的版本将会支持.NET标准2.0,它不是 .NET Core 1.1的一部分。

使用.NET Core 1.1

你可以从安装 .NET Core 1.1开始。你可以通过使用 .NET Core 1.1安装程序或者通过操作系统里的包管理器在全局范围内安装它,或者通过下载.NET Core的压缩包来进行独立安装(这种方式也易于卸载)。

并行安装

你可以在一个已经安装了.NET Core 1.0的机器上面安装.NET Core 1.1,这是完全没有问题的。

命令dotnet new会在机器上创建新的引用最新运行时的模板,这可能不是所期望的。如果不是期望的,你可以手动编辑 project.json生成的结果里的版本号。基于大家的反馈,我们将会在新版的工具中改变这一行为,同时会随着Visual Studio 2017最终版本来发布。如果你是用Visual Studio去创建新工程而没有使用dotnet new命令,那么你不会被影响的。

 

尝试它

你可以通过命令行工具尝试 .NET Core,在你的命令提示符或者终端使用下面这些命令。

你也可以通过我们为使用.NET CoreDocker创建的dotnet-bot样例去尝试.NET Core 1.1(虽然你不必使用Docker)

升级已有的.NET Core 1.0工程

你可以把已有的 .NET Core 1.0的工程升级到 .NET Core 1.1。我将会给你展示通过dotnet new更新后的project.json文件。查看该文件并拷贝/粘贴新的版本号到已有工程的project.json文件是最快捷的方式。现在还没有自动把工程升级到最新.NET Core版本的工具。

默认的.NET Core 1.1的project.json文件如下所示:

这个project.json文件与 .NET Core 1.0 的project.json文件看起来是非常相似的,除了目标框架分别为netcoreapp1.1和1.1.0等版本字符串。

你可以使用下面的替换来帮你暂时地或者永久地把 project.json文件更新到.NET Core 1.1。

  • 把netcoreapp1.0目标框架更新为netcoreapp1.1
  • 把Microsoft.NETCore.App包的版本从1.0.x(例如:1.0.0或1.0.1)更新到1.1.0

更新 .NET 标准库项目

更新.NET标准库项目是没有必要的。

我们发布了.NET标准库1.6.1包,但是,工程库引用它是没有必要的。因为更新的包已经为Microsoft.NETCore.App 1.1包提供了依赖关系。

使用.NET Core 1.1 Docker 镜像

你可以通过 Docker来使用.NET Core 1.1。你可以在microsoft/dotnet找到更新的镜像。

最新的标签已经被更新到.NET Core 1.1 SDK。这背离了我们之前在1.1 预览版 1 发布中讨论的计划。我们查看了其他平台上的当前版本和LTS版本,发现已经更新到最新的版本了,这是合理的。

有两个新的.NET Core 1.1 运行时标签:

  • Linux: 1.1.0-runtime
  • Windows: 1.1.0-runtime-nanoserver

有两个新的.NET Core 1.1 SDK标签

  • Preview 2-based SDK, 使用了project.json: 1.1.0-sdk-projectjson
  • Preview 3-based SDK, 使用了CSProj: 1.1.0-sdk-msbuild, .

你可以通过.NET Core Docker样例资源库里的[dotnetapp-current sample][dotnetapp-current] 尝试 .NET Core 1.1。可以通过更新project.json和Dockerfile文件很里的版本字符来很容易地将其他样例修改为依赖.NET Core 1.1镜像。

当前版本

在之前.NET Core 1.1的博文中,我讲到我们采用了区分发布的行业惯例,包括“长期支持(LTS)”和“当前的”这两种版本。.NET Core 1.1是当前的版本,也是第一个当前的版本。一旦一个当前的版本发布出去,我们期望很少去更新它,希望只是安全方面的更新。

我们推荐大多数开发者使用LTS版本。这也是Visual Studio中默认的版本。我们也期待使用当前版本的用户给我们反馈。虽然很难去量化,但 .NET Core开发团队认为LTS版本和当前版本的用户比例为80/20还是比较合理的。

结束语

请尝试新的.NET Core版本并给我们反馈。.NET Core 1.1,ASP.NET Core和EF Core有很多重要的改进可以使你的应用程序更快更好。这是第一个当前的版本,可以提供给你更快的功能。

总结下,最大的变化就是:

  • 性能改进,足以在TechEmpower基准上有第一条很积极的条目记录
  • 添加四种操作系统的发行版
  • 10多个新功能和100多个bug修复
  • 文档更新

感谢每一个使用.NET Core 1.0和.NET Core 1.1 Preview 1并给我们提供反馈的用户。感谢所有的贡献和参与!请告诉我们你关于最新版本的意见建议。

现在,你可以开始用Visual Studio 2015, Visual Studio 2017 RC, Visual Studio Code或Visual Studio Mac版来创建.NET Core 1.1 应用程序了。