我用C#开发了.NET7.0库。我想在 .NET Framework 和 .NET Core 中使用我的库。为了构建为.Netstandard2.1,我尝试更改
<TargetFramework>net7.0</TargetFramework>
到
<TargetFramework>netstandard2.1</TargetFramework>
执行此操作后,总是出现 C# 7.3 语言错误。为了修复语言错误,我在修复此语言错误后将 C# 语言选项添加到 8.0,它总是出现错误并且永远不会停止。我该如何解决这个问题?我如何将这个库构建为 netstandard2.1
以及其他错误之一:
Error CS0656 Missing member 'System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute..ctor' required for the compiler
我在新的解决方案中创建了新的 netstandard2.1 库,并且再次出现此错误。有什么办法可以修复这个错误吗?
要将其与 NetStandard 2.1 一起使用,您必须限制自己只能使用 NetStandard 2.1 功能。
由于 .Net 7 后来出现并且(通常)取代了 ns2.1,这意味着如果您首先针对 .Net 7 进行构建,然后尝试添加 ns2.1 兼容性,您可能会发现自己有一堆使用功能的代码ns2.1 中尚不可用
首先使用 NetStandard 2.1 构建库。然后就可以添加对.Net 7的支持了。您可能仍然需要处理框架的更改,导致您需要条件预处理器指令,但您不必处理刚刚缺失的语言功能。
说到预处理器指令,有些事情发生了变化。例如,在某个时刻(我不记得是在 NS2.1 之前还是之后),ADO.Net 库从
System.Data
移至 Microsoft.Data
。如果是在之后,您将需要一个 #if
指令来更改版本并为正确的位置添加 using
块。