安装 Microsoft.AspnetCore.Authentication 后无法加载 Microsoft.AspNetCore.Razor.Runtime。AzureADB2C.UI

Cannot Load Microsoft.AspNetCore.Razor.Runtime after installing Microsoft.AspnetCore.Authentication.AzureADB2C.UI

我有一个简单的 AspNet Core 3.1.1 Web 应用程序,可以正常编译和运行。可以公平地说,除了自定义 HTML 和 CSS 之外,该站点是使用 Visual Studio 模板创建的开箱即用项目。

唯一添加的 nuget 包是 BuildWebCompiler 1.12.394 — 不是最新的,虽然我已经尝试更新到最新的并且它不影响接下来的问题。

如果我安装 nuget 包 Microsoft.AspNetCore.Authentication.AzureADB2C.UI 3.1.1 一切都会继续正常编译。但是,我在 Startup.ConfigureServices 期间遇到以下异常:

System.IO.FileNotFoundException
  HResult=0x80070002
  Message=Could not load file or assembly 'Microsoft.AspNetCore.Razor.Runtime, 
  Version=3.1.1.0, 
  Culture=neutral, 
  PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified.
  Source=<Cannot evaluate the exception source>
  StackTrace:<Cannot evaluate the exception stack trace>

除了 nuget 安装之外,项目中没有更改任何代码或设置。抛出异常的代码是:

public void ConfigureServices(IServiceCollection services)
{
   services.AddRazorPages(); // <--- throws
   services.AddServerSideBlazor();
}

我四处寻找,看到与 Core 3.1.x 相关的几个程序集正在引发此文件未找到异常,但没有发现具体提及 Razor.Runtime

Microsoft.AspNetCore.Razor.Runtime 有一个 nuget,但它的版本是 2.2.0。在任何情况下,安装它似乎都没有帮助。

使用 Microsoft.AspNetCore.Authentication.AzureADB2C.UI 3.1.0 似乎可以解决问题。

我还没有调查原因。

这是一个已知问题。您可以追踪相关话题 here and here。那是因为您更新了 NuGet 包但尚未安装 3.1.1 运行时。

所以你可以尝试以下两种方式:

  • 正在将 Microsoft.AspNetCore.Authentication.AzureADB2C.UI 降级为 3.1.0
  • 使用 Microsoft.AspNetCore.Authentication.AzureADB2C.UI 版本 3.1.1 但升级到 SDK 3.1.101

参考:https://github.com/dotnet/aspnetcore/issues/18334#issuecomment-581183460