我可以依赖为旧的 .NET 标准构建的项目吗?

时间:2021-04-29 13:42:19

标签: c# .net .net-5

我的任务是将一个有点复杂的 C# 项目从 .NET 4.8 升级到 .NET 5。Windows 升级助手或多或少顺利,经过一些清理,看起来不错,除了一个依赖项,可悲的是绝对不可更换(在工作范围内)。

所以我的解决方案是:将与此依赖项交互的所有代码移动到为 .NET 5 和 .NET 4.8 构建的子项目(至少在 csproj 文件中),并将其用作依赖性。 这真的有效吗?

Visual Studio 说可以,但我完全没有发现关于该主题的任何内容(虽然我相信它可以工作,但可能只是我想要它)。

【关于结果绝对一塌糊涂的问题:这个依赖的功能会在一年之内过时,届时子项目无论如何都会被删除,遗憾的是ugrade不能等到那个时候】< /p>

1 个答案:

答案 0 :(得分:1)

<块引用>

我可以在 .net4.8 中构建一个项目并将其包含在为 net5 构建的项目中吗

也许?基本规则是 .Net 5 不能使用 .Net 4.x 库。这条规则可能有一些例外,但我找不到参考资料来确认这一点。而且我相当确定,如果库尝试使用 .Net 5 中不可用的方法,它会导致运行时失败。

推荐的方法是将库移植到 .Net 标准 2.0,这样您就可以在 .Net 4.8 和 .Net 5 项目中毫无问题地使用它。除非您使用 UI 或 .net 标准中不可用的其他库,否则这应该是相当直接的移植。

可能可以使用 multi-targeting,即在您的项目文件中写入应该为 .Net 5 和 .Net 4.8 编译项目。您可以使用编译指示(即 #if NET48)在任一框架中包含或排除代码部分。我没有使用过这个功能,所以我不能提供太多细节。

相关问题