asp.net core 1.1 项目升级至 asp.net core 2.0 preview 2

这两天把一个 asp.net core 1.1 的项目迁移到了 asp.net core 2.0 preview 2 ,在这篇随笔中记录一下。 

如果项目在有 global.json 文件,需要删除或修改为 .net 2.0 preview 2 的 sdk 版本号。

对于类库项目的 .csproj,需要把 TagetFramework 改为 netstandard2.0 ,比如

<PropertyGroup><TargetFramework>netstandard1.6</TargetFramework>    <AssemblyName>CNBlogs.Identity.ServiceAgent</AssemblyName><PackageId>CNBlogs.Identity.ServiceAgent</PackageId>  <NetStandardImplicitPackageVersion>1.6.1</NetStandardImplicitPackageVersion>  <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>  <GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>  <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
</PropertyGroup>

改为

<PropertyGroup><TargetFramework>netstandard2.0</TargetFramework></PropertyGroup>

对于单元测试项目,TargetFramework 需要改为 netcoreapp2.0 ,比如

<PropertyGroup><TargetFramework>netcoreapp1.1</TargetFramework><AssemblyName>CNBlogs.Identity.UnitTests</AssemblyName><PackageId>CNBlogs.Identity.UnitTests</PackageId>  <GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>  <RuntimeFrameworkVersion>1.1.1</RuntimeFrameworkVersion>  <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>  <GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>  <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute></PropertyGroup>

改为

<PropertyGroup><TargetFramework>netcoreapp2.0</TargetFramework></PropertyGroup>

对于 web 项目,需要该动的地方很多。除了把 TargetFramework 改为 netcoreapp2.0 ,比如

<PropertyGroup><TargetFramework>netcoreapp1.1</TargetFramework>  <PreserveCompilationContext>true</PreserveCompilationContext><AssemblyName>CNBlogs.Identity.Web</AssemblyName><OutputType>Exe</OutputType><PackageId>CNBlogs.Identity.Web</PackageId><RuntimeIdentifiers>win10-x64;win8-x64;osx.10.12-x64;ubuntu.14.04-x64</RuntimeIdentifiers>  <PackageTargetFallback>$(PackageTargetFallback);dnxcore50;portable-net45+win10</PackageTargetFallback>  <RuntimeFrameworkVersion>1.1.1</RuntimeFrameworkVersion></PropertyGroup>

改为

<PropertyGroup><TargetFramework>netcoreapp2.0</TargetFramework></PropertyGroup>

还需要:

1)移除所有对 Microsoft.AspNetCore 的引用

<PackageReference Include="Microsoft.AspNetCore.Authentication" Version="1.1.2" /><PackageReference Include="Microsoft.AspNetCore.Authentication.Cookies" Version="1.1.2" /><PackageReference Include="Microsoft.AspNetCore.DataProtection.Extensions" Version="1.1.2" /><PackageReference Include="Microsoft.AspNetCore.DataProtection.Redis" Version="0.1.2" /><PackageReference Include="Microsoft.AspNetCore.Diagnostics" Version="1.1.2" /><PackageReference Include="Microsoft.AspNetCore.Hosting" Version="1.1.2" /><PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.3" /><PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="1.1.1" /><PackageReference Include="Microsoft.AspNetCore.Server.IISIntegration" Version="1.1.2" /><PackageReference Include="Microsoft.AspNetCore.Server.Kestrel" Version="1.1.2" /><PackageReference Include="Microsoft.AspNetCore.Session" Version="1.1.2" /><PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="1.1.2" />

添加 Microsoft.AspNetCore 的引用

<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0-preview2-final" />

2)修改 Authentication 相关的代码

  • CookieAuthenticationOptions 的命名空间改为 Microsoft.AspNetCore.Authentication.Cookies

  • HttpContext.Authentication.SignInAsync() 改为 HttpContext.SignInAsync() ,需要安装 NuGet 包 Microsoft.AspNetCore.Authentication.Abstractions ,引用命名空间 Microsoft.AspNetCore.Authentication 。 

  • cookieAuthOptions.Value.AuthenticationScheme 改为 CookieAuthenticationDefaults.AuthenticationScheme

3) 针对 BundlerMinifier 的修改

在 asp.net core 2.0 preview 2 的 docker  容器中 build 项目,在执行 dotnet bundle 时出现下面的错误

It was not possible to find any compatible framework version
The specified framework 'Microsoft.NETCore.App', version '1.1.0' was not found.
- Check application dependencies and target a framework version installed at:/
- Alternatively, install the framework version '1.1.0'.

这是由于 nuget 包 BundlerMinifier.Core 不支持 .net core 2.0 。github 上签出 BundlerMinifier 的源码(已增加了对.net core 2.0的支持),自己打包。 

升级时不仅要升级 PackageReference 中的 BundlerMinifier.Core ,还要升级 DotNetCliToolReference 中的 BundlerMinifier.Core 。

4)针对 DataProtection 的修改

Microsoft.AspNetCore.DataProtection.Redis 的 PersistKeysToRedis() 方法不起作用,需要改用临时解决方法:

services.Configure<KeyManagementOptions>(o =>{o.XmlRepository = new RedisXmlRepository(() => redisConn.GetDatabase(), "DataProtection-Keys-Cnblogs");
});

详见 PersistKeysToRedis not working in .NET Core 2.0 Preview 2 with Redis 0.1.2

5)Startup 的修改

  • 去除构造函数中下面的代码


    var builder = new ConfigurationBuilder()    .SetBasePath(env.ContentRootPath)    .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)    .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true); builder.AddEnvironmentVariables(); Configuration = builder.Build();


  • 去除 Configure 方法中下面的代码

    loggerFactory.AddSerilog(); loggerFactory.AddConsole(Configuration.GetSection("Logging"));
  • IConfigurationRoot 改为 IConfiguration


    public Startup(IConfiguration configuration)
    {Configuration = configuration;
    } 
    public IConfiguration Configuration { get; set; }


6)Program 的修改

public class Program
{    
   
public static void Main(string[] args){BuildWebHost(args).Run();}  

   
public static IWebHost BuildWebHost(string[] args){        
       return WebHost.CreateDefaultBuilder(args).ConfigureLogging((context, logging) =>{logging.AddSerilog();}).UseStartup<Startup>().Build();} }

完成 web 项目升级后,升级所有 NuGet 包,删除所有 AssemblyInfo.cs 文件,整个升级就完成了。

原文地址:http://www.cnblogs.com/dudu/p/7266134.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/324277.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JSP的<c:foreach/>标签只输出一次标签体内容的坑

一、场景复现 <% page language"java" import"java.util.*" pageEncoding"UTF-8"%> <% String[] arr{"a","b","c","d"}; request.setAttribute("arr", arr); %><!DOCTYPE HT…

springboot访问jsp页面变成直接下载?

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号【雄雄的小课堂】。前言大家在写springboot的时候不知道你们遇没遇到过这样的问题&#xff0c;当我们满怀信心的在浏览器中输入&#xff1a;localhost://8080/default&#xff0c;然后回车的时候&#xff0c;期待的页…

ASP.NET WebAPI 中的参数绑定

当 WebAPI 调用 Controller 上的方法时&#xff0c; 必须为其参数赋值&#xff0c; 这个过程就是参数绑定。 本文介绍 WebAPI 如何绑定参数&#xff0c; 以及如何进行自定义。 WebAPI 默认使用下面的规则进行参数绑定&#xff1a; 简单类型&#xff0c; WebAPI 尝试从 URL 中…

<table/>设置列宽度无效的问题

一、场景重现 <html> <head><title>测试</title><style type"text/css">.table {table-layout: fixed;}</style> </head> <body> <div style"width: 100%"><table class"table" styl…

公众号一年能有多少收入?

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号【雄雄的小课堂】。前言由于坚持日更公众号也有一年左右了&#xff0c;好多人问我你这公众号一年到底能收入多少啊&#xff1f;值得你花那么多的时间去摆弄吗&#xff1f;今天我就来说说我这公众号&#xff0c;一年到…

SpringBootAdmin客户端接入

只有网关微服务有方框中的内容&#xff0c;其他微服务没有

ssl初一组周六模拟赛【2018.5.12】(期中)

前言 这周竟然没有奶死自己&#xff0c;成为模拟赛第一个AK的&#xff08;然而第一题数据错了所以这次放加上第一题的分&#xff09; 先说一下成绩&#xff1a; 姓名成绩wyc400xjq290xxy255lrz225hzb205zyc190hjq180lw140 期中总结 正题 题目1&#xff1a;ssl2413 排名【…

Java自动化邮件中发送图表(一)

一、邮件需求 邮件中需要展示柱状图、折线图和饼图等图表数据。如图&#xff1a; 二、解决方案 将图表转成图片&#xff0c;采用html邮件文本&#xff0c;使用base64编码图片发送邮件。 将图表导出成图片有三种方式&#xff1a; &#xff08;1&#xff09;JFreeChart 优点…

springboot+mybatis-plus实例demo

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号【雄雄的小课堂】。前言故事还得从一次微信通话说起……一个夜深人静的晚上&#xff0c;正在电脑前看书&#xff0c;突然&#xff0c;放在旁边的手机响了起来&#xff0c;原来是一个朋友打的微信电话。“你在干嘛呢&a…

分布式事务,EventBus 解决方案:CAP【中文文档】

前言 很多同学想对CAP的机制以及用法等想有一个详细的了解&#xff0c;所以花了将近两周时间写了这份中文的CAP文档&#xff0c;对 CAP 还不知道的同学可以先看一下 .NET Core 事件总线,分布式事务解决方案&#xff1a;CAP。 本文档为 CAP 文献&#xff08;Wiki&#xff09;&…

POJ1330-Nearest Common Ancestors【tarjan,LCA】

正题 题目链接&#xff1a; http://poj.org/problem?id1330 题目大意 就是给出一棵树&#xff0c;求LCA&#xff08;最近公共祖先&#xff09; 解题思路 用tarjan求LCA&#xff0c;这里给出tarjan算法 代码 #include<cstdio> #include<iostream> using nam…

Java自动化邮件中发送图表(二)之JFreeChart

一、JFreeChart库 JFreeChart是JAVA平台上的一个开放的图表绘制类库。 JFreeChart可生成饼图&#xff08;pie charts&#xff09;、柱状图&#xff08;bar charts&#xff09;、散点图&#xff08;scatter plots&#xff09;、时序图&#xff08;time series&#xff09;、甘…

springboot点击运行没反应,什么都不显示的解决方式

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号【雄雄的小课堂】。最近这段时间一直在看开源框架&#xff0c;自己慢慢的琢磨&#xff0c;终于将jeecgboot环境搭建起来&#xff0c;并且成功的跑起来了demo&#xff0c;在此过程中&#xff0c;很明显的能感觉到自己进…

C#和NewSQL更配 —— CockroachDB入门

一、CockroachDB是什么 CockroachDB&#xff08;https://www.cockroachlabs.com&#xff09;是Google备受瞩目的Spanner的开源模仿&#xff0c;承诺提供一种高存活性、强一致性&#xff0c;可横向扩展的SQL数据库。主要的设计目标是全球一致性和可靠性&#xff0c;从蟑螂&#…

springboot+layui从控制器请求至页面时js失效的解决方法

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注公众号【雄雄的小课堂】。 昨天遇到了个很棘手的问题&#xff0c;其实也怪自己大意了&#xff0c;然后翻来覆去一个类一个类的去看&#xff0c;看完之后挨个技术点怀疑&#xff0c;然后分别从各个技术点入手解决&#xff0c;但…

JfreeChart(八)之甘特图

转载自 JfreeChart实现甘特图 一、甘特图简介 甘特图(Gantt chart)又称为横道图、条状图(Bar chart)。以提出者亨利L甘特先生的名字命名。 甘特图内在思想简单&#xff0c;即以图示的方式通过活动列表和时间刻度形象地表示出任何特定项目的活动顺序与持续时间。基本是一条…