【问题标题】:Why is client-side Blazor using .NET Standard 2.0 and how to use .NET Core 3.0 with Blazor?为什么客户端 Blazor 使用 .NET Standard 2.0 以及如何将 .NET Core 3.0 与 Blazor 一起使用?
【发布时间】:2019-06-13 20:23:47
【问题描述】:

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

因为此时,blazorhosted 模板会创建一个客户端项目作为 .NET Standard,这会阻止使用 .NET Core 3.0。

Project 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 generate 以代码 1 退出。

那么,有可能是我做错了什么还是没有办法?

【问题讨论】:

  • 定位 .NET Core 对于网站上下文中的下载来说太大了。即使对于最小的 .NET Core 应用程序,您也需要运行时,大约是 60-80 MB。 Waaaaaaaaaaaayy 当用户访问该网站时要下载很多。 Blazor 基于单声道构建,用于将 IL 转换为 Webassembly
  • 但是为什么客户端应用程序还需要 .NET Core 3.0?可以从中受益的 API 并不多(本机跨度支持对客户端代码无关紧要,异步套接字方法也不重要)
  • @Tseng 我想在 NET Core 3.0 中编写服务器端 + 共享类并从客户端添加对它们的引用
  • 是的,但是为什么呢?当您需要仅在那里可用的 api 时,您只需要定位 netcorex.y。如果您不需要任何 .NET Core 特定的 Api .NET Standard 是非常好的用法(并建议可重用性,虽然在客户端上重用的不多,但共享库是可重用的库)

标签: c# .net-core .net-standard blazor .net-core-3.0


【解决方案1】:

客户端 Blazor 在 Mono WASM 运行时上运行,并且仅支持 netstandard 2.0 ATM。 Blazor in Core 的公告是指服务器端 Blazor。两者在代码方面是兼容的,但底层运行时技术完全不同。

【讨论】:

  • 我想在 NET Core 3.0 中编写服务器端 + 共享类并从客户端添加对它们的引用,可行吗?
  • 没有。而且没有真正的理由这样做。如果要在客户端 blazor 中使用共享库,则应根据 netstandard 编译它们。 netstandard 2.0 对于任何共享库都应该足够了,net core 3.0 不会添加任何在客户端可用的有用的东西。
  • 是的,你不会有太多共享的逻辑、模型和东西。 Rest 是 ASP.NET Core 服务器端(在 .NET Core 上运行并从性能方面获益),但您的共享库或业务逻辑不会从 .NET Core 3.0 中获益。一个库应该以 .NET Core 为目标是非常罕见的(除了仅在 .NET Core 上可用的高性能 API,例如现在支持新 Span/Memory 类型的 Async Socket 扩展)
【解决方案2】:

Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation 不适用于 blazor,因为它需要 .NET 3.0

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

【讨论】:

  • 每次都要重新编译吗?或者您可以手动重新编译一次,然后链接到新创建的 DLL(它是调试符号),以便以后在项目中使用它进行调试?
猜你喜欢
  • 2019-07-25
  • 2018-06-12
  • 2020-01-25
  • 2019-06-13
  • 2018-06-11
  • 1970-01-01
  • 2019-01-01
  • 2020-01-24
  • 1970-01-01
相关资源
最近更新 更多