将 .NET Framework 项目转换为 .NET Standard 项目
将 .NET Framework 项目转换为 .NET Standard 项目
如今 .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://dlgcy.com/net-framework-to-net-standard/
出处:https://www.cnblogs.com/weiliuhong/p/net-framework-to-net-standard.html
关注我】。(●'◡'●)
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的【因为,我的写作热情也离不开您的肯定与支持,感谢您的阅读,我是【Jack_孟】!
本文来自博客园,作者:jack_Meng,转载请注明原文链接:https://www.cnblogs.com/mq0036/p/15185321.html
【免责声明】本文来自源于网络,如涉及版权或侵权问题,请及时联系我们,我们将第一时间删除或更改!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2020-08-25 手把手撸套框架-目录
2020-08-25 遗传算法的简单应用-巡回旅行商(TSP)问题的求解
2020-08-25 遗传算法的简单应用-求解方程
2020-08-25 初识遗传算法
2020-08-25 gRPC的简单使用
2017-08-25 新手买股票的步骤及相关概念和疑问
2017-08-25 C# Lambda表达式详解,及Lambda表达式树的创建