为什么客户端Blazor使用.NET Standard 2.0,如何在Blazor中使用.NET Core 3.0?

11

是否可以使用.NET Core 2.2或3.0与Blazor一起使用?

因为目前,blazorhosted模板将客户端项目创建为.NET Standard,这会导致无法使用.NET Core 3.0。

项目blazor.Shared与netstandard2.0(.NETStandard,Version = v2.0)不兼容。 项目blazor.Shared支持:netcoreapp3.0(.NETCoreApp,Version = v3.0)blazor.Client C:\ app \ blazor.Client \ blazor.Client.csproj 1

将所有内容更改为.NET Core 3.0后,我收到以下错误:

rzc生成退出代码1。

那么,是否可能我做错了什么或者还没有解决的方法?


针对.NET Core的下载来说,在网站上下文中太大了。即使是最小的.NET Core应用程序,您也需要运行时,这类似于60-80 MB。当用户访问网站时,下载量太大了。Blazor基于mono构建,用于将IL转换为Webassembly。 - Tseng
但是为什么你甚至需要.NET Core 3.0来开发客户端应用程序呢?并没有太多的API可以从中受益(本地跨度支持对于客户端代码并不重要,异步套接字方法也是如此)。 - Tseng
@Tseng 我想在NET Core 3.0中编写服务器端 + 共享类,并从客户端添加对它们的引用。 - Axelly
是的,但为什么?当您需要仅在netcorex.y中可用的API时,您只需要针对它进行目标定位。如果您不需要任何.NET Core特定的API,则使用.NET Standard非常好(并且建议用于可重用性,尽管客户端上没有太多可重用的内容,但共享库是可重用的库)。 - Tseng
2个回答

8

客户端 Blazor 运行在 Mono WASM 运行时上,该运行时目前仅支持 netstandard 2.0。Blazor 在 Core 的发布是指服务器端 Blazor。代码方面两者兼容,但底层运行时技术完全不同。


我想在.NET Core 3.0中编写服务器端和共享类,并从客户端添加对它们的引用,这可行吗? - Axelly
不需要这样做,也没有真正的理由去这样做。如果您想在客户端 Blazor 中使用共享库,则应该针对 netstandard 进行编译。netstandard 2.0 对于任何共享库来说应该已经足够了,net core 3.0 不会添加任何有用的内容,因为它在客户端上无法使用。 - Flores
是的,你不会有太多共享逻辑、模型等内容。其余部分要么是运行在.NET Core上并从中获益的ASP.NET Core服务器端,但你的共享库或业务逻辑并不受.NET Core 3.0的影响。一个库应该完全针对.NET Core的情况相当罕见(除了高性能API,目前仅在.NET Core上可用,例如支持新的Span/Memory类型的Async Socket扩展)。 - Tseng

0

Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation 在 Blazor 上无法工作,因为它需要 .NET 3.0。

因此,每次进行更改时都需要手动重新编译,这在调试时会很慢。


您需要每次重新编译吗?还是可以手动重新编译一次,然后链接到新创建的 DLL(以及其调试符号),以供使用它的项目进行后续调试? - benhorgen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接