【发布时间】:2021-02-26 11:29:02
【问题描述】:
我在 Visual Studio 中创建了一个新的 Blazor WebAssembly 项目,默认情况下,它以 .NET Standard 2.1 为目标,因此使用 C# 8。
我还编写了一个为 .NET 5 编写的库,并在其中使用了 C# 9。
如何在我的 Blazor 项目中使用这个库?我无法在 .NET Standard 2.1 项目中引用 .NET 5 库。
- 当我将库的目标框架更改为 .NET Standard 2.1 时,我无法在库项目中使用 C# 9。当我将 csproj 中的 LangVersion 显式设置为 9.0 时,我的所有记录类型都会出现一些预定义类型 System.Runtime.CompilerServices.IsExternalInit 未定义的编译错误
- 当我将 Blazor 项目的目标框架更改为 .NET 5 并引用 .NET 5 库时,它不再工作(启动失败并出现 HTTP 错误 500.33 - ANCM 请求处理程序加载失败)
【问题讨论】:
-
您是否尝试更改 csproj 的
LangVersion中的语言版本?见C# language versioning。 C# 版本和框架没那么紧。 -
FWIW 我认为在 C# 9 的任期内编写库还为时过早。除非它向后兼容 .NET Standard 2.1,否则你真的会限制你的受众。
-
如果你多目标
.net 5和.NET Standard 2.1你可以使用 C# 9 -
这里是MSDN上的相关链接docs.microsoft.com/en-us/dotnet/standard/…
-
Blazor 应该在 .NET 5 中开箱即用。这是使用 VS 16.8 创建默认 Blazor 应用程序项目时所得到的。我怀疑您的项目设置在这方面存在问题。