没有可用于指定 RuntimeIdentifier“browser-wasm”的 Microsoft.AspNetCore.App 运行时包

问题描述 投票:0回答:12

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

我安装了带有运行时的 SDK 5.0.100-rc.1。我按照指南所述更新了项目,但仍然收到以下错误:

没有可用于指定 RuntimeIdentifier“browser-wasm”的 Microsoft.AspNetCore.App 运行时包

项目文件:

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

我有一个 global.json 文件,我的所有 SDK 文件都存在,并且我尝试删除我的 obj、bin 和 .vs 文件夹,但都没有成功。

asp.net-core blazor blazor-webassembly
12个回答
36
投票

我终于成功了。

我做了指南所说的一切,除了我更改为这样的项目文件:

<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">

17
投票

遇到同样的问题,终于解决了。方法如下。

就我而言,错误不是 Blazor 项目 本身的结果,而是同一解决方案中的 引用项目 造成的。引用的项目针对 .net 标准 2.1,其本身应该没问题;但是,它还安装了一些可能与 Blazor 依赖项冲突的 NuGet 包:(Microsoft.Extensions.*)。

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 build”没有给出有关冲突的可理解的错误消息,而不是给出有关提到 Blazor 项目的运行时标识符的模糊消息。

希望这也能帮助其他人。


12
投票

就我而言,我引用了一个引用数据层类的项目,并且对于 Blazor 客户端或“浏览器wasm”来说并不安全。

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


8
投票

更新 nuget 包并将错误的包添加到错误的项目后,我遇到了同样的问题。 我有一个库 Project.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 不兼容,它引用了库 Project.Application.csproj,因此请注意 Blazor 项目中引用的所有项目,以便它们不会不包含不兼容的软件包。


8
投票

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

您需要更新您的项目才能使用以下 SDK:

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

2
投票

在 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" />

2
投票

就我而言,我必须删除此处提到的

<RuntimeIdentifier>browser-wasm</RuntimeIdentifier>
<UseBlazorWebAssembly>true</UseBlazorWebAssembly>

我还必须删除

Microsoft.AspNetCore.Components.WebAssembly.BuildServer
,版本为 3.xx.xx,并且导致
Blazor.Client
项目文件发生冲突。


1
投票

在 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" />-->

0
投票

我按照理查德描述的方式解决了这个问题:

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

0
投票

我花了两个小时搞砸了一个非常基本的设置,其中我将默认的 Blazor 页面提取到单独的 Razor 组件库程序集 - 尝试隔离依赖项、向上和向下版本控制 nuget、更改项目设置、删除 bin 和 obj文件夹...

我终于通过将 VS 2022 更新到 17.5.1 来修复它

我不确定为什么这样有效,但确实有效:/


0
投票

使用版本 8.0.4 进行测试

在较新的版本中,有明确的规则不允许这样做。这发生在

ProcessFrameworkReferences
msbuild 步骤中。

可以通过将以下行添加到 blazor 客户端项目来修复此问题:

<Target Name="AllowUsingAspNetCoreInBlazorWasm" AfterTargets="ProcessFrameworkReferences" >
    <ItemGroup>
        <UnavailableRuntimePack Remove="Microsoft.AspNetCore.App" />
    </ItemGroup>
</Target>

这消除了

browser-wasm
对 asp net 的显式排除。


0
投票

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

<UseAppHost>true</UseAppHost>

用于常见的

Directory.Build.props

通过将其设置回 false,我不再收到丢失的

browser-wasm
错误。

© www.soinside.com 2019 - 2024. All rights reserved.