【问题标题】:There was no runtime pack for Microsoft.AspNetCore.App available for the specified RuntimeIdentifier 'browser-wasm'没有可用于指定 RuntimeIdentifier 'browser-wasm' 的 Microsoft.AspNetCore.App 运行时包
【发布时间】:2021-01-07 14:36:47
【问题描述】:

尝试使用 Microsoft 提供的 guide 从 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>
...

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

感谢您的任何想法。

【问题讨论】:

  • 您正在运行哪个 Visual Studio?它应该是最新的预览版。
  • 这个错误信息似乎是发布错误,你是在发布到IIS的时候出现这个错误吗?如果是这样,它似乎是github上的know issue,请检查,你可以更新到.net 5 的最新版本。
  • @HenkHolterman 是的,它是最新的预览版。 16.8.0 预览版 3.0
  • 你有 global.json 文件吗?
  • @aguafrommars 是的。 { "sdk": { "version": "5.0.100-rc.1.20452.10" } }

标签: asp.net-core blazor blazor-client-side blazor-webassembly


【解决方案1】:

我终于成功了。

我做了guide 说的所有事情,除了我改成这样的项目文件:

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

  <PropertyGroup>
    <TargetFramework>net5.0</TargetFramework>
    <UserSecretsId>*****</UserSecretsId>
    <UseBlazorWebAssembly>true</UseBlazorWebAssembly>
  </PropertyGroup>
...

但我不知道official upgrade guide 说使用时是否正确:

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

代替:

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

【讨论】:

  • 按照您所说的更改我的项目文件并将UseBlazorWebAssembly 添加为true 后,我的客户端项目构建,但是当我运行其服务器项目时,我得到Application startup exception: System.TypeLoadException: Method 'FilterDiagnostic' in type 'Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions' from assembly 'Microsoft.CodeAnalysis.CSharp, Version=3.7.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' does not have an implementation.
  • 我在breaking changes 中没有看到关于FilterDiagnosticUseEndpoints 的任何内容。
  • @PatrickSzalapski 我正在使用 Blazor Server,所以我的解决方案中只有一个项目。不知道如何帮助你。尝试关注下面理查兹的答案。
  • 是的 - 我也一样。
  • 同上=>我也一样
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

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

    在我的情况下,错误不是 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)
    

    blog post about .net 5 rc 提到 Blazor 项目 中的所有 Microsoft.Extensions.* 包都应更新为 5.0.0-rc.1.*。

    能够通过删除项目依赖项来解决问题(我一开始并不需要,但不小心放在那里)。

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

    希望这对其他人也有帮助。

    【讨论】:

    • 具体有哪些扩展? Blazor 客户端使用的扩展与服务器端 ASP.NET Core 使用的扩展非常不同。如果 ProjectA 使用 abstractions 包,应该不会有任何问题。
    • BTW .NET 5 不再使用 .NET Standard 来跨平台共享代码。 .NET 5 目标 (net5.0)*是* 跨平台目标,net5.0-ios14.0 是特定运行时。支持 .NET Standard 2.1 以实现兼容性,但不再用作 跨平台目标
    • 我将解决方案中的所有四个项目都更新为net5.0,但仍然出现相同的错误。在您的示例中,您认为包 Microsoft.Extensions.Configuration.Json 存在冲突。知道如何尝试找出我的哪些间接依赖项可能存在冲突吗?
    • 老实说,并非如此。我想我只是通过反复试验来尝试老式的方法。 (创建一个具有相同依赖项的新(空)项目,并从您的 blazor 项目中引用该项目。然后逐个删除依赖项,直到构建成功。
    • 我尝试使用 Blazor WASM + gRPC 服务器,当我在 Blazor 项目中添加 gRPC 服务时,我遇到了这个问题。为了解决这个问题,我遵循这个答案并从项目中删除重复的依赖项(Grpc.AspNetCore,在 Blazor 项目中自动添加),一切正常。
    【解决方案4】:

    我遇到了这个问题,出现了一条不同的错误消息“名称空间 'Microsoft.AspNetCore.Mvc.ApplicationParts' 中不存在类型或名称空间名称 'ApplicationPartAttribute'(您是否缺少程序集引用?)”。

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

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

    【讨论】:

      【解决方案5】:

      感谢您的帮助,就我而言,我必须按照@Kasta 和官方指南中提到的步骤进行操作。

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

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

      就我而言,我不得不

      • 删除&lt;RuntimeIdentifier&gt;browser-wasm&lt;/RuntimeIdentifier&gt;&lt;UseBlazorWebAssembly&gt;true&lt;/UseBlazorWebAssembly&gt;Mentioned here
      • Blazor.Client 项目文件中删除导致冲突的 Microsoft.AspNetCore.Components.WebAssembly.BuildServer 版本 3.xx.xx。

      【讨论】:

        【解决方案6】:

        在我的例子中,我引用了一个引用数据层类的项目,因此对于 Blazor 客户端或“浏览器-wasm”来说是不安全的。

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

        【讨论】:

          【解决方案7】:

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

              <UseAppHost>true</UseAppHost>
          

          在一个普通的Directory.Build.props中使用

          通过将此设置回 false,我不再收到缺少的 browser-wasm 错误。

          【讨论】:

            【解决方案8】:

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

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

            【讨论】:

              猜你喜欢
              • 2021-08-17
              • 2021-03-15
              • 2022-07-19
              • 1970-01-01
              • 2021-10-29
              • 2021-03-07
              • 1970-01-01
              • 2022-11-02
              • 2021-03-06
              相关资源
              最近更新 更多