将项目从 .NET5 转换为 .NET Framework 4.8

Converting a project from .NET5 to .NET Framework 4.8

说来话长,总结一下…… 我开始研究一个解决方案,为该解决方案创建许多项目(如 class 库)。然后我最终需要为我拥有昂贵许可证的东西使用第三方 SDK。来看看,那个第三方SDK只支持.NET Framework.

因为我的解决方案基于 .NET 5/Core.NET Framework 中的 SDK,所以我遇到了一个大问题。它们不能存在于同一环境中并相互引用。因此,咬紧牙关,花费数小时将我所有的项目转换为 .NET Framework 4.8,同时唱一首永无止境的咒骂歌曲...

问题

我尝试从 .NET5 转换为 .NET 4.8 的第一个 class 库碰巧安装了 Nuget 包。那个 Nuget 是 Newtonsoft.Json Version="12.0.3" (https://www.nuget.org/packages/Newtonsoft.Json).

更改项目文件中的框架后,VSCode 提示找不到 Newtonsoft 命名空间。这让我觉得我安装的 Nuget 与 .NET Framework 4.8 不兼容。

我 运行 遇到的问题是在将框架从 net5.0 更改为 net48 后找不到命名空间 Newtonsoft

问题是 OmniSharp 给出了误报。我重新启动 VSCode,一旦 VSCode 加载了正在使用的新框架,问题就消失了。

.NET 支持 cross platform targeting which means you can have your SDK style .NET5 project multi-targets both net5 and net48。将来,如果第三方库以 .NET Core 为目标,那么您只需更改 TargetFrameworks 属性.

这里讨论了一个类似的问题 https://github.com/dotnet/runtime/discussions/40304 如果有帮助的话。