没有可用于指定运行时标识符 Microsoft.AspNetCore.App 的运行时包'browser-wasm'



尝试使用Microsoft提供的本指南从ASP.NET Core 3.1迁移到5.0。

已安装带有运行时的SDK 5.0.100-rc.1。更新项目作为指南说,仍然得到以下错误:

There was no runtime pack for Microsoft.AspNetCore.App available for the specified RuntimeIdentifier 'browser-wasm'

项目文件:

<Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<UserSecretsId>*****</UserSecretsId>
</PropertyGroup>
...

找不到与此错误相关的任何内容。我不知道在哪里搜索更多信息。

谢谢你的任何想法。

我终于成功了。

我做了指南所说的一切,除了我改成这个的项目文件:

<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<UserSecretsId>*****</UserSecretsId>
<UseBlazorWebAssembly>true</UseBlazorWebAssembly>
</PropertyGroup>
...

但当官方升级指南说要使用时,我不知道它是否正确

<Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly">

而不是:

<Project Sdk="Microsoft.NET.Sdk.Web">

也遇到了同样的问题,最终使其正常工作。方法如下。

在我的案例中,错误不是Blazor项目本身的结果,而是同一解决方案中引用的项目

Solution
- Project A (.net standard 2.1 - Class library)
- Dependencies
- Packages
- Microsoft.Extensions.Configuration.Json (<-- example dependency)
- Project B (.net 5 - Blazor webassembly)
- Dependencies
- Projects
- Project A (<-- caused the error, presumably because of the above dependency)

关于.net 5 rc的博客文章提到Blazor项目中的所有Microsoft.Extensions.*包都应该更新到5.0.0-rc.1.*.

能够通过删除项目依赖项来解决这个问题(我一开始并不需要它,但意外地被放在了那里)。

我不明白的是,为什么"dotnet构建"没有给出关于冲突的可理解的错误消息,而不是关于运行时标识符的模糊消息,其中提到了Blazor项目

希望这也能帮助其他人。

在我的案例中,我引用了一个引用数据层类的项目,而对于Blazor客户端或"browser wasm"来说是不安全的。

在我从客户端解决方案中删除引用之后>依赖项>项目我的解决方案已编译。

我也遇到了同样的问题,并在这篇文章中询问了微软:https://github.com/dotnet/aspnetcore/issues/27738

您需要更新您的项目以使用以下SDK;

Client - Microsoft.NET.Sdk.BlazorWebAssembly
Server - Microsoft.NET.Sdk.Web
Shared - Microsoft.NET.Sdk

在更新nuget包并将不正确的包添加到不正确的项目后,我遇到了同样的问题。我有一个librabryProject.Application.csproj带有:

<Project Sdk="Microsoft.NET.Sdk">

在这个项目中,我有一个包:

<PackageReference Include="FluentValidation" Version="10.4.0" />

我不小心添加了额外的包裹:

<PackageReference Include="FluentValidation.AspNetCore" Version="10.4.0" />

然后我的密码坏了。

看起来FluentValidation.AspNetCore与Blazor客户端项目不兼容-Microsoft.NET.Sdk.BlazorWebAssembly,后者引用了librabryProject.Application.csproj所以请注意Blazor项目中引用的所有项目,这样它们就不会包含不兼容的包。

感谢您的帮助,就我而言,我必须遵循@Kasta和官方指南提到的步骤。

我确保下面的SDK更改已经到位,感谢@OzanYasinDogan提到这一帮助。

  • 客户端-Microsoft.NET.Sdk.BlazorWebAssembly
  • 服务器-Microsoft.NET.Sdk.Web
  • 共享-Microsoft.NET.Sdk

在我的情况下,我不得不

  • 移除<RuntimeIdentifier>browser-wasm</RuntimeIdentifier><UseBlazorWebAssembly>true</UseBlazorWebAssembly>。此处提及
  • Blazor.Client项目文件中删除导致冲突的版本3.xx.xx的Microsoft.AspNetCore.Components.WebAssembly.BuildServer

我遇到了一个不同的错误消息"命名空间"Microsoft.AspNetCore.Mvc.ApplicationParts"中不存在类型或命名空间名称"ApplicationPartAttribute"(是否缺少程序集引用?)"。

在我的案例中,我有一个共享助手类库,我已经开始使用Microsoft.AspNetCore.Mvc 2.0构建通用数据api存储库,该库在我的Blazor项目中使用最新发布的.Net 5引用。

为了解决这个问题,我不得不将共享类项目分离,将通用数据api元素移动到一个新项目中,该项目删除了.Net 5 Blazor和Microsoft.AspNetCore.Mvc 2.0之间的链接。

在BlazorWASM应用程序引用的项目中注释掉对以下包的引用后出现的错误

<!--<PackageReference Include="FluentValidation.AspNetCore" Version="10.3.6" />-->
<!--<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.1" />-->
<!--<PackageReference Include="NLog.Web.AspNetCore" Version="4.14.0" />-->

在一个NET 6.0 Blazor应用程序中,我意外地将这些添加到我的共享项目而不是API项目中,从而纠正了这个错误,问题消失了。

<PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="6.0.3" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" PrivateAssets="all" Version="6.0.3" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="6.0.3" />

我遇到了同样的问题,我使用解决了它

<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<UseBlazorWebAssembly>true</UseBlazorWebAssembly>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<AssemblyName>$(AssemblyName.Replace(' ', '_'))</AssemblyName>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="6.0.4" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="6.0.4" PrivateAssets="all" />
</ItemGroup>

代替:

<Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<AssemblyName>$(AssemblyName.Replace(' ', '_'))</AssemblyName>
</PropertyGroup> -->
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="6.0.4" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="6.0.4" PrivateAssets="all" />
</ItemGroup> 

我遇到了同样的问题,发现原因是

<UseAppHost>true</UseAppHost>

用于普通CCD_ 8

通过将其设置回false,我不再得到丢失的browser-wasm错误。

我花了两个小时处理了一个非常基本的设置,在这个设置中,我将默认的Blazor页面提取到一个单独的Razor组件库组件中——试图隔离依赖关系,上下版本控制nuget,更改项目设置,删除bin和obj文件夹。。。

我通过将VS 2022更新到17.5.1最终修复了它

我不知道为什么这样做有效,但它已经:/

我用Richard描述的方式解决了这个问题:

  1. 在服务器和客户端引用的所有解决方案项目中清除了对Microsoft.Extensions.Logging、Microsoft.Extensions.Configuration…包3.2版的引用
  2. 已更新.Server项目
  3. 更新。客户端项目。将元素保留在目标框架部分,它起作用了
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<RazorLangVersion>3.0</RazorLangVersion>
</PropertyGroup>

最新更新