.net core 2.1 终于发布了, 赶紧升级一下。
一. 安装sdk
首先现在并安装 sdk(64-bit)
安装完毕后如果新建项目可以看到已经有2.1的选项了
二. 更新现有2.0项目到2.1
1. 修改 项目版本
右键点击解决方案管理器中的项目, 选择编辑项目名.csproj
将 <targetframework>netcoreapp2.0</targetframework> 中的2.0改为2.1,保存。
2. 将引用 microsoft.aspnetcore.all 替换为 microsoft.aspnetcore.app
项目依赖中找到 microsoft.aspnetcore.all ,移除它, 在nugget中搜索并安装 microsoft.aspnetcore.app
注意:以下内容依旧包含在 microsoft.aspnetcore.all 中, 而 microsoft.aspnetcore.app 中不存在
microsoft.aspnetcore.applicationinsights.hostingstartup
microsoft.aspnetcore.azureappservices.hostingstartup
microsoft.aspnetcore.azureappservicesintegration
microsoft.aspnetcore.dataprotection.azurekeyvault
microsoft.aspnetcore.dataprotection.azurestorage
microsoft.aspnetcore.server.kestrel.transport.libuv
microsoft.aspnetcore.signalr.redis
microsoft.data.sqlite
microsoft.data.sqlite.core
microsoft.entityframeworkcore.sqlite
microsoft.entityframeworkcore.sqlite.core
microsoft.extensions.caching.redis
microsoft.extensions.configuration.azurekeyvault
microsoft.extensions.logging.azureappservices
microsoft.visualstudio.web.browserlink
所以如果项目中需要用到这些内容, 可以单独引用它们, 而不建议再次整体引用 microsoft.aspnetcore.all
3. 修改其他引用
再次打开*.csproj文件, 可以看到对应的 microsoft.aspnetcore.all 已经替换为microsoft.aspnetcore.app 了
删除各种 <dotnetclitoolreference include="********" version="2.0.3" /> 例如: <dotnetclitoolreference include="microsoft.entityframeworkcore.tools.dotnet" version="2.0.3" />
最终这个*.csproj文件类似这样
<project sdk="microsoft.net.sdk.web"> <propertygroup> <targetframework>netcoreapp2.1</targetframework> <usersecretsid>aspnet-{project name}-{guid}</usersecretsid> </propertygroup> <itemgroup> <packagereference include="microsoft.aspnetcore.app" /> <packagereference include="microsoft.visualstudio.web.codegeneration.design" version="2.1.0" privateassets="all" /> </itemgroup> </project>
4.修改program.cs
修改main方法和buildwebhost方法, 结果如下
public class program { public static void main(string[] args) { createwebhostbuilder(args).build().run(); } public static iwebhostbuilder createwebhostbuilder(string[] args) => webhost.createdefaultbuilder(args) .usestartup<startup>(); }
5. 修改startup
修改后代码示例如下, 主要是新增行,删除usebrowserlink, 见下文代码的颜色标注
using microsoft.aspnetcore.builder; using microsoft.aspnetcore.hosting; using microsoft.aspnetcore.http; using microsoft.aspnetcore.mvc; using microsoft.extensions.configuration; using microsoft.extensions.dependencyinjection; namespace webapp1 { public class startup { public startup(iconfiguration configuration) { configuration = configuration; } public iconfiguration configuration { get; } public void configureservices(iservicecollection services) { services.configure<cookiepolicyoptions>(options => { // this lambda determines whether user consent for non-essential cookies is needed for a given request. options.checkconsentneeded = context => true; options.minimumsamesitepolicy = samesitemode.none; }); services.addmvc() .setcompatibilityversion(compatibilityversion.version_2_1); } public void configure(iapplicationbuilder app, ihostingenvironment env) { if (env.isdevelopment()) { //app.usebrowserlink(); 删除此行 app.usedeveloperexceptionpage(); } else { app.useexceptionhandler("/error"); app.usehsts(); } app.usehttpsredirection(); app.usestaticfiles(); app.usecookiepolicy(); app.usemvc(); } } }
三. 其他改动
- shared文件夹中添加了新文件_cookieconsentpartial.cshtml, 在_layout文件中被引用 <partial name="_cookieconsentpartial" />
- _validationscriptspartial.cshtml 文件中的jquery.validate.js版本升级到了1.17.0
- jquery从2.2.0升级到3.3.1
四. 一点郁闷的事
看到2.1发布, 首先没有去下载sdk而是查看vs是否有更新,希望更新vs的时候可以顺便更新sdk。 当前版本15.7.1 , 官方文档中提示前几天有15.7.2发布, vs中检查更新一直没有。
下载sdk安装好后, 终于右上角的小旗子亮了提示有更新, 各种重试均是不动没有下载进度。
最后不管它发现它以一种怪异的方式开始了更新。。。