将 .NET Framework 项目转换为 .NET Standard 项目

将 .NET Framework 项目转换为 .NET Standard 项目

独立观察员 2020 年 8 月 20 日

如今 .NET Core 是未来发展的主流(至少在 .NET 5 发布之前),而我们如果要改造一个项目为 .NET Core 项目,则它引用的项目应当先改造为 .NET Standard 项目。

下表给出了每种平台支持指定的 .NET Standard 版本的最低版本(参考):

 

简单说明一下:.NET Standard 2.0 支持 .NET Core 2.0 和 .NET Framework 4.6.1(最好使用 4.7.2 或更高),所以使用这些版本的话就不用进行多平台配置了。.NET Standard 2.1 开始就和 .NET Framework 不兼容了,这种情况还是要多平台配置。(关于多平台配置,后面会提到)

 

言归正传,我们如何将 Framework 类库项目转换为 Standard 类库项目呢?答案就是使用 dotnet try-convert 工具。

安装前先要确保你已经安装了 .NET Core SDK (get it here),然后在任务栏搜索 “cmd”,以管理员身份运行:

 

使用如下命令安装或卸载:

:: 安装:
dotnet tool install -g try-convert
:: 卸载:
dotnet tool uninstall -g try-convert

我已经安装过了:

 

接下来在项目路径打开 cmd,使用如下命令进行转换:

try-convert

 

转换前:

 

转换后:

 

可以看到已备份了旧的项目文件,并修改出了新的项目文件。这时我们点击 VS 的弹框重载项目即可(没有打开 VS 则无此操作):

 

由于使用了新的项目文件,我们在项目上右键,就能看到 “编辑项目文件” 的选项:

 

打开后发现,项目类型还是 .NET Framework 4.5.2(net452):

 

在项目上右键–属性,可以看到目标框架也还是以前的:

 

那么我们接下来就来进行 “多平台配置” 吧。

首先,在项目文件中将 TargetFramework 改为 TargetFrameworks (加个 “s”),然后里面的内容加上 “netstandard2.0” ,并与之前的内容以分号隔开,修改后如下:

 

然后我们关闭 VS 并重新打开(重新加载解决方案),再次查看项目属性,可以看到目标框架里没有指定特定的内容了,生成一下也没什么错误,说明配置成功了。

 

另外,新式项目的依赖项组织形式也发生了变化:

 

如果解决方案里有多个项目需要转换,也可以定位在解决方案目录,然后执行转换命令(try-convert),已转换的项目会自动跳过,剩余项目将自动批量转换:

 

通过命令输出,我们还得知了新式的项目类型叫做 “.NET SDK-style project” ,哈哈,涨姿势了。

 

如果 .NET Standard 依赖项中出现了黄色三角形:

 

可以看看该项是否需要,不需要的可以移除。另外,在打开的类文件标签下方可以手动选择当前在什么框架下查看:

 

如果有引用在 .NET Standard 框架下没有,可在 “包” 上右键–“管理 NuGet 程序包”:

 

然后搜索并安装:

 

好了,大致就是这些了。

 

参考:

《从 .NET Framework 移植到 .NET Core 的概述》

 

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

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

相关文章

7-3 最短路径 (20 分)(分支限界+思路+详解)

一:题目 给定一个有N个顶点和E条边的无向图,顶点从0到N−1编号。请判断给定的两个顶点之间是否有路径存在。如果存在,给出最短路径长度。 这里定义顶点到自身的最短路径长度为0。 进行搜索时,假设我们总是从编号最小的顶点出发&a…

一份【软件工程】的学习指南已到达,请注意查收!!

软件工程——起始篇一、引言二、学习【软件工程】的原因1、软件设计师证书2、相关领域人员必备技能三、【软件工程】的学习方法1、不要盲目为了学习而学习2、规划学习路线四、结束语【软件工程】应该是大学计算机专业必修的一门课,对于开发者来说,可能有…

Dotnet Core异常处理的优雅实践

异常处理,也可以做得很优雅。一、前言异常处理的重要性,老司机都清楚。这篇文章,我们来理一下Dotnet Core异常处理的几种方式。Try Catch方式Exception Filter方式内建的异常处理中间件自定义的异常处理中间件这是目前使用比较多的几种方式。…

jdbc的预处理中如何处理模糊查询

一:问题描述 当我们用模糊查询的时候 想向sql语句中的?赋值,这时会发现我们的sql语句一直报错 二:解决方法 package com.wyj.one;import com.wyj.pojo.Role; import com.wyj.utils.JdbcutilsBydruid; import org.apache.commons.dbutils.Q…

『软件工程6』详解软件项目管理之软件范围与估算

软件项目管理——软件范围与估算一、软件项目计划1、目标2、步骤二、软件范围1、软件范围定义2、软件范围——引例三、影响估算的因素四、软件项目资源1、软件项目资源构成2、分析图3、人力资源4、硬件资源5、软件工具6、可复用构件五、软件工作量与成本的估算1、基于LOC估算工…

【翻译】.NET 5 Preview8发布

今天,.NET 5预览8发布了,对于.NET5.0的功能开发已经完成了,这必须要排除待处理的bug,预览8是最后一次预览版本。预计11月正式的.NET5.0版本发布之前还将发布两个正式之前的候选版本,这篇文章描述了.NET5.0版本中的一系…

『软件工程7』详解软件项目管理之风险分析与管理

软件项目管理——风险分析与管理一、风险及风险管理的含义1、风险的含义2、风险管理含义二、被动和主动的风险策略1、被动风险策略2、主动风险策略三、风险的特性四、风险的类型1、项目风险2、技术风险3、商业风险五、风险管理的步骤1、风险识别2、风险预测3、风险缓解、监控和…

7-1 页面置换算法--FIFO (50 分)(思路详解)

一:题目 先初始化页面大小,和物理块数。连续输入页面的逻辑地址,以“-1”作为结束标志,采用FIFO页面置换算法、固定分配局部置换分配策略。输出该页面的页号和页内位移,若该页不在内存,并且还有剩余的物理块&#xff…

7-2 页面置换算法--LRU (50 分)

一:题目(思路详解运行时错误解决) 先初始化页面大小,和物理块数。连续输入页面的逻辑地址,以“-1”作为结束标志,采用LRU页面置换算法、固定分配局部置换分配策略。输出该页面的页号和页内位移,若该页不在内存,并且还…

『软件测试3』八大典型的黑盒测试方法已来袭,快快接住!

文章目录一、等价类划分法1、定义2、等价类划分法步骤3、设计测试用例步骤4、案例:学生选修课程二、边界值分析法1、边界值分析法概述2、设计测试用例3、边界值设计原则三、错误推测法1、错误推测法概述2、错误推测法基本思想四、因果图设计法1、因果图设计法概述2、…

使用Jenkins来发布和代理.NetCore项目

Back toStudy!注:书接上文,上回《【CI/CD系列】使用Docker安装Jenkins》咱们说到了使用Docker镜像的方式,来建立Jenkins服务,用来持续集成和持续发布项目,但是上一篇文章有两个问题:01创建的容器不能操作和…

数据库课设(足球联赛管理系统)

一:前言 如果有关注博主的粉丝,可能会发现贴心杰又缺更好几天了,但是我是宠粉杰啊,怎么可能会忘了我的宝贝粉丝呢,只不过是临近期末,各种大作业课设如期而至,这几天我在写数据库课设&#xff0…

.NET Core实用技巧(一)如何将EF Core生成的SQL语句显示在控制台中

前言笔者最近在开发和维护一个.NET Core 项目,其中使用几个非常有意思的.NET Core 相关的扩展,在此总结整理一下。EF Core 性能调优如果你的项目中使用了 EF Core, 且正在处于性能调优阶段,那么了解 EF Core 生成的 SQL 语句是非常关键的。那…

695.岛屿的最大面积(026)BFS

二:思路 1.这里的遍历数据方式为BFS广度遍历 2.当我们遇到一个‘1’的时候,我们就遍历他的左右上下(邻接点),如果是1那就入队,直到队列 为空为止。 3.我们记录每个岛屿的面积是采用 我们设置初始值为1,当每遇到一个邻…

『软件工程8』软件项目进度安排与跟踪,一招学会计算关键路径

项目进度安排与跟踪一、项目进度安排的定义及原则1、进度安排的定义2、进度安排的基本原则二、通信开销1、通信开销的定义2、通信路径计算3、案例分析三、工作量分配1、40-20-40规则2、工作量分配图例3、工作量分布推荐四、项目进度安排方法1、关键路径方法(CPM,Critical Path …

await,async 我要把它翻个底朝天,这回你总该明白了吧

一:背景1. 讲故事await,async 这玩意的知识点已经被人说的烂的不能再烂了,看似没什么好说的,但我发现有不少文章还是从理论上讲述了这两个语法糖的用法,懂得还是懂,不懂的看似懂了过几天又不懂了&#xff0…

栈在前端中的应用,顺便再了解下深拷贝和浅拷贝!

详解栈在前端中的应用一、栈是什么二、栈的应用场景三、前端与栈:深拷贝与浅拷贝1、JS数据类型(1)js数据类型的分类(2)js数据类型的定义和存储方式(3)js数据类型的判断方式2、深究浅拷贝和深拷贝…

【招聘(深圳)】轻岁 诚聘.NET Core开发

招聘简介为了支撑公司互联网的战略转型,我们将基于.NET Core K8S/TKE 腾讯云云函数的微服务架构,打造高性能、高并发、高扩展的基础平台,同时基于该平台进行应用开发,包括Web端,移动端(微信公众号、小程序…

详解链表在前端的应用,顺便再弄懂原型和原型链!

链表在前端中的应用一、链表VS数组二、JS中的链表三、前端与链表:JS中的原型链1、原型是什么?2、原型链是什么?3、原型链长啥样?(1)arr → Array.prototype → Object.prototype → null(2&…

计网课设 模拟实验拓扑

一:前言 幸福的是考完两科了,抽出时间赶紧赶赶课设,两周遇到了好多事,开心的,烦心的,一堆堆的压过来,但庆幸自己迷失不太久,又能继续学习了 二:实验概览 1:实验拓扑图 2:实验要求…