Microsoft.AspNetCore.Identity在Razor类库上不起作用

时间:2019-02-20 16:42:05

标签: c# asp.net-core asp.net-identity

我有一个由两个项目组成的简单解决方案:

  1. ASP.NET Core主项目
  2. 剃刀类库

我想在剃刀类库中使用IdentityRole,因此我在剃刀类库项目中以及编写时下载了Microsoft.AspNetCore.Identity

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc.RazorPages;

namespace RazorClassLibrary2.MyFeature.Pages
{
  public class Page1Model : PageModel
  {
      public void OnGet()
      {
          IdentityRole role;
      }
   }
}

我收到以下错误:

  

找不到类型或名称空间名称'IdentityRole'(您是否缺少using指令或程序集引用?)

由于我想使用.Net Core框架,但是Razor类库是使用

创建的
<TargetFramework>netstandard2.0</TargetFramework>

我用

进行更改
<TargetFramework>netcoreapp2.2</TargetFramework>
  

注意:更改TargetFramework似乎没问题,请参阅此评论   https://github.com/aspnet/Docs/issues/7816#issuecomment-428193831

考虑到这种操作可能是问题的原因,我创建了另一个“项目>类库(.Net Core)” ,下载了Microsoft.AspNetCore.Identity,并创建了另一个类似< / p>

using Microsoft.AspNetCore.Identity;
using System;

namespace ClassLibrary1
{
    public class Class1
    {
       IdentityRole role;
    }
}

如果我在ASP.NET Core(主)项目中下载Microsoft.AspNetCore.Identity,并在主项目的任何类中声明了IdentityRole类型的变量,则将找到引用。

我要去哪里错了?

如果您要合作,可以在https://github.com/Blackleones/identityTest处找到示例项目,随时发送拉取请求。

1 个答案:

答案 0 :(得分:0)

我解决了将 microsoft.aspnetcore.app 程序包添加到razor类库项目中的问题。 问题在于,IdentityRole是在 microsoft.extensions.identity.core 中定义的,并且此程序包不是 microsoft.aspnetcore.identity

的依赖项