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…

【2018.5.12】模拟赛之三-ssl2415 连通块【并查集】

正题 题目大意 在一个n*n的棋盘上进行m此操作。在一个格子上放一个黑或白的棋子。多个相连的同色棋子形成一个连通块&#xff0c;求每次操作后求连通块数。 解题思路 并查集表示连通&#xff0c;然后每次扩展&#xff0c;如果有同色的就连通&#xff0c;注意判断已经是同一个…

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…

【2018.5.12】模拟赛之四-ssl2416 条形图【高精度,dp】

正题 题目大意 第ii行有n&#x2212;i+1" role="presentation" style="position: relative;">n−i+1n−i+1个格子&#xff0c;每一行要求从左到右画#&#xff0c;要求下面哪行的#数不能超过前一行。要求第一行必须有#&#xff0c;求画的方案数。…

JavaFX如何将WritableImage转换为Image

转载自 JavaFX如何将WritableImage转换为Image 我正在做一些应用程序&#xff0c;制作截图LineChart并将其保存为pdf&#xff0c;所以我不知道将WritableImage&#xff08;JavaFX 2.2&#xff09;转换为Image&#xff08;iText lib&#xff09;的平滑方式。 临时解决方案是 …

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

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

ASP.NET Core 源码学习之 Options[1]:Configure

ASP.NET Core 配置系统 在ASP.NET 4.X中&#xff0c;通常将配置存储在 web.config 中&#xff0c;使用静态帮助类来获取这些配置&#xff0c;而对 web.cofng 中进行任何修改时&#xff0c;则会导致应用程序池的回收&#xff0c;这种实现方式并不是很友好。 因此&#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;很明显的能感觉到自己进…