【发布时间】:2021-04-23 04:06:12
【问题描述】:
我一直在通过 Udemy 中的一个很棒的教程来了解有关 Blazor (https://www.udemy.com/course/programming-in-blazor-aspnet-core/) 的更多信息,但遇到了一个我不完全确定该怎么做的绊脚石。
短版
当从 .Net Standard 2.1 升级到 .Net 5 时,我在尝试运行此示例 Blazor 应用程序时遇到此错误(因此它不会影响我的任何代码):System.TypeLoadException: Could not resolve type with token 01000014 from typeref (expected class 'System.Threading.Tasks.Task' in assembly 'System.Runtime, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a')I看到this SO link 的类似问题,但它并没有真正让我摆脱太多。
详细版本
使用 .Net 的早期版本,您安装了最新版本,然后 Visual Studio 选择了它,您切换了项目,然后就离开了 - 一切都是无缝的,并且正常工作。不过,对于一些较新的东西,微软的消息传递非常混乱,我现在遇到的问题是在 Udemy 教程中,我需要使用IJSObjectReference 接口来做一些事情。当我第一次将其添加到代码中时,无法解析类型引用,因此快速搜索指出我需要通过更改以下内容将项目移动到 .Net 5:
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
</PropertyGroup>
对此(因为 Visual Studio 并不总是将 .Net 5 显示为选项):
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
看起来很简单,所以我将 Client Blazor 项目更改为这个并尝试编译。这给了我这个错误:Project BlazorMovies.Client is not compatible with netcoreapp3.1 (.NETCoreApp,Version=v3.1). Project BlazorMovies.Client supports: net5.0 (.NETCoreApp,Version=v5.0)。我想好了,接下来我将 Server 升级到 5.0,然后一切都可以正常编译,但是一旦我把它拉起来,我就会收到这个错误:System.TypeLoadException: Could not resolve type with token 01000014 from typeref (expected class 'System.Threading.Tasks.Task' in assembly 'System.Runtime, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a')。然后我记得不记得我是否安装了.Net 5,所以我去检查并(通过docs.microsoft.com)我只安装了4.8.03752。然后,我进行了一些搜索以尝试找到 .Net 安装程序,并且有多个(请参阅here) - 甚至页面的布局也确实令人难以抗拒,大约 20 个安装链接分散在各处。我知道我至少需要 x64,所以我首先安装了 SDK,因为它表示支持 Visual Studio,而且速度比我预期的要快得多(基于之前安装的 .Net),但现在 VS 显示的 .Net 5 看起来很有希望!不过,我重新检查了注册表,它仍然显示 4.8.03752,当我去添加/删除程序时,.Net 5 并没有像所有其他版本一样出现。我接下来安装了 Hosting Bundle,它说它是成功的,但示例应用程序仍然有完全相同的错误。
有什么建议吗?我知道 Blazor 是相当新的,但由于微软在 .Net Framework、.Net Standard、.Net Core 之间的消息非常混乱,现在迁移回 .Net 5 似乎需要多个安装程序,我真的不知道该去哪里下一个。该错误完全是根据堆栈跟踪从 Web Assembly 代码中生成的,因此它似乎与我正在做的事情无关。这是 Chrome 在控制台中显示的所有内容的屏幕截图:
【问题讨论】:
标签: c# asp.net-core blazor blazor-webassembly