如何将 WASM 应用程序升级到 NET5 框架?

How to upgrade WASM app to NET5 framework?

我决定将我的一个项目升级到最新的 .NET 版本 (.NET 5)。

它由一个针对 netcoreapp3.1 的 asp.net 核心应用程序(web api)和一个针对 netstandard2.1 的 blazor WASM 项目组成。 在两个项目中将 targetframework 更新为 net5.0 后,api 项目工作正常但 WASM 项目不工作。

升级应该遵循哪些步骤?

p.s。我有最新的 visual studio(版本 16.8.1)和 dotnet(版本 5.0.100)

Blazor 应用程序中的错误消息:

HTTP Error 500.33 - ANCM Request Handler Load Failure
Common solutions to this issue:
Make sure Microsoft.AspNetCore.App is referenced by your application.
Specific error detected by ANCM:
Could not find the assembly 'aspnetcorev2_inprocess.dll' referenced for the in-process application. Please confirm the Microsoft.AspNetCore.Server.IIS or Microsoft.AspNetCore.App is referenced in your application.

要升级,您还需要更改一些代码,这是您需要在 WASM 项目上执行的操作:

在 WASM 项目的 .csproj 文件上:

  1. <Project Sdk="Microsoft.NET.Sdk.Web">更改为<Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly">
  2. <TargetFramework>netstandard2.1</TargetFramework>更改为<TargetFramework>net5.0</TargetFramework>
  3. 移除<RazorLangVersion>3.0</RazorLangVersion>
  4. 删除对 Microsoft.AspNetCore.Components.WebAssembly.Build
  5. 的包引用
  6. 将所有其他包更新到最新版本5.0.0

wwwroot/index.html:

  1. <app>Loading...</app>更改为<div id="app">Loading...</div>

Program.Main:

  1. builder.RootComponents.Add<App>("app")更改为builder.RootComponents.Add<App>("#app")
  2. HttpClient 的注册更改为 Scoped,如下所示:
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });

进行这些更改后,错误应该消失了。

阅读更多扩展场景here