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

摘要:
下表显示了指定的的最低版本(参考)。每个平台支持的NET标准版本:因此,使用这些版本不需要多平台配置。如何将Framework类库项目转换为标准类库项目?接下来,在项目路径中打开cmd:使用以下命令进行转换:您可以看到旧项目文件已备份。此时,我们可以单击VS重新加载项目(如果未打开VS,则不存在此操作):因为使用了新的项目文件:

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

独立观察员 2020 年 8 月 20 日

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

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

将 .NET Framework 项目转换为 .NET Standard 项目第1张

简单说明一下:.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”,以管理员身份运行:

将 .NET Framework 项目转换为 .NET Standard 项目第2张

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

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

我已经安装过了:

将 .NET Framework 项目转换为 .NET Standard 项目第3张

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

try-convert

转换前:

将 .NET Framework 项目转换为 .NET Standard 项目第4张

转换后:

将 .NET Framework 项目转换为 .NET Standard 项目第5张

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

将 .NET Framework 项目转换为 .NET Standard 项目第6张

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

 将 .NET Framework 项目转换为 .NET Standard 项目第7张

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

将 .NET Framework 项目转换为 .NET Standard 项目第8张

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

将 .NET Framework 项目转换为 .NET Standard 项目第9张

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

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

将 .NET Framework 项目转换为 .NET Standard 项目第10张

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

将 .NET Framework 项目转换为 .NET Standard 项目第11张

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

将 .NET Framework 项目转换为 .NET Standard 项目第12张

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

 将 .NET Framework 项目转换为 .NET Standard 项目第13张

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

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

将 .NET Framework 项目转换为 .NET Standard 项目第14张

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

将 .NET Framework 项目转换为 .NET Standard 项目第15张

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

将 .NET Framework 项目转换为 .NET Standard 项目第16张

然后搜索并安装:

将 .NET Framework 项目转换为 .NET Standard 项目第17张

好了,大致就是这些了。

参考:

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

 同步首发:

http://dlgcy.com/net-framework-to-net-standard/

微信订阅号
 

免责声明:文章转载自《将 .NET Framework 项目转换为 .NET Standard 项目》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇『MXNet』第八弹_数据处理API_下_Image IO专题Linux系统学习 十八、VSFTP服务—虚拟用户访问—配置虚拟用户访问下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

[代码审计]XiaoCms(后台任意文件上传至getshell,任意目录删除,会话固定漏洞)

 0x00 前言 这段时间就一直在搞代码审计了。针对自己的审计方法做一下总结,记录一下步骤。 审计没他,基础要牢,思路要清晰,姿势要多且正。 下面是自己审计的步骤,正在逐步调整,寻求效率最高。 0x01 关于 XiaoCms XiaoCms 企业建站版基于 PHP+Mysql 架构 是一款小巧、灵活、简单、易用的轻量级 cms。能满足各种企业站 博客 等...

mariadb5.5.56二进制离线安装

在生产环境中一般使用发布好的二进制版本,简单概括一下安装过程:   1. 下载 地址为:https://downloads.mariadb.org/mariadb/5.5.56/   这里选择最新版本的5.5.56稳定版,进入后根据计算机位数选择,这里下载适用于64位操作系统的Linux x86_64版本   这里下载包含glibc和不包含glibc的都是...

20个2020年最优秀的PHP框架回顾

这篇文章主要介绍了20个2020年最优秀的PHP框架回顾,简单分析了目前比较主流的优秀框架供大家参考,需要的朋友可以参考下   对于Web开发者来说,PHP是一款非常强大而又受欢迎的编程语言。世界上很多顶级的网站都是基于PHP开发的。本文我们就来回顾一下20个2020年最优秀的PHP框架。 每一个开发者都知道,拥有一个强大的框架可以让开发工作变得更加快捷...

vscode+vue不得不用的插件和不得不添加的配置

先吐槽一下:第一次用vscode,真是心酸,要啥没啥,代码基本错误检测没有也就算了,Html标签自动补全也没有(当然,其实是有的,只是需要用户自己配置),这些都不能在安装或者初始化的时候一起装了吗,还非得要一个个百度然后找插件,心酸。。。 吐槽归吐槽,会用谷歌百度就是大佬。 文件自动保存设置 vscode的强大之一便是自动编译,无需刷新页面,但自动编译是需...

oracle sqlldr导入数据和导入去除空格

1.新建目录E:load把需要导入的数据文件放到目录下面  这是我自己造的测试数据。。。 2.在文件下新建脚本文件 Load data infile 'E:loadinfo.txt' into table "TEST_TABLE" fields terminated by "!" TRAILING NULLCOLS( T1, T2, T3 )  3....

浅谈如何设计自动化测试框架

关于测试框架的好处,比如快速回归提高测试效率,提高测试覆盖率等这里就不讨论了。这里主要讨论自动化框架包含哪些内容,以及如何去设计一个测试框架。 1. 什么是自动化测试框架? 它是由一个或多个自动化测试基础模块、自动化测试管理模块、自动化测试统计模块等组成的工具集合。 以常见的前端UI测试为例,一个测试框架大概包括测试对象,测试组件,基础类和函数,工具类,测...