.NET Core 3.0 身份问题

.NET Core 3.0 Identity issue

我正在尝试将我的项目更新到 .NET Core 3.0 和 .NET Standard 2.1(包括 .NET Core Identity)

我有 2 个项目。首先是我的网站 API:

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <TypeScriptToolsVersion>Latest</TypeScriptToolsVersion>
    <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="3.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.0.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.0.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.0.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.0.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.0.0" />
  </ItemGroup>
...

并且在这个项目中与 Identity 相关的代码工作正常。

正如我在这里看到的,我需要删除包 Microsoft.AspNetCore.Identity https://docs.microsoft.com/en-us/aspnet/core/migration/22-to-30?view=aspnetcore-3.0&tabs=visual-studio

第二个项目:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard2.1</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <!--<FrameworkReference Include="Microsoft.AspNetCore.App" />-->
    <!--<PackageReference Include="Microsoft.AspNetCore.Identity" Version="2.2.0" />-->
  </ItemGroup>
...

所以,如果我从我的第二个项目中删除 Microsoft.AspNetCore.Identity,我会看到错误:

The type or namespace name 'SignInManager<>' could not be found (are you missing a using directive or an assembly reference?)

如果我添加这一行:

<FrameworkReference Include="Microsoft.AspNetCore.App" />

我看到这个错误:

Error NETSDK1073 The FrameworkReference 'Microsoft.AspNetCore.App' was not recognized

我该如何解决我的问题?

请参阅 this Github 问题,其中解释了很多更改。正如其中一条评论所述。

Correct. We are removing the netstandard2.0 from most Microsoft.AspNetCore.* assemblies. See #3754

因此,为了在您的 .csproj 中使用 <FrameworkReference Include="Microsoft.AspNetCore.App" />,您需要将目标设为 netcoreapp3.0 或更高。

我在将 visual studio 企业版 2019 降级为专业版 2019 后开始遇到这个问题。

.Net核心框架netcoreapp3.1

我通过将 Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation 从 3.1.3 更新到 3.1.4 来修复它。