将项目从 .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 如果有帮助的话。
说来话长,总结一下……
我开始研究一个解决方案,为该解决方案创建许多项目(如 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 如果有帮助的话。