名称空间Microsoft.IdentityModel.Protocol.Extensions中不存在类型或命名空间名称“Protocol”

时间:2015-07-16 02:53:37

标签: c# .net nuget nuget-package-restore

当我在 Microsoft.IdentityModel.Protocol.Extensions 的nuget包中包含using语句时,我无法为我的生活编译我的Visual Studio 2013 MVC项目:

  

名称空间“Microsoft.IdentityModel”中不存在类型或命名空间名称“Protocol”(您是否缺少程序集引用?)

请注意,我使用类似命名但不相关的包,如下所示:

using Microsoft.IdentityModel.Protocol.Extensions;
using Microsoft.IdentityModel.Clients.ActiveDirectory;
using Microsoft.IdentityModel.Protocols;
using Microsoft.Owin.Security;
using Microsoft.Owin.Security.Cookies;
using Microsoft.Owin.Security.Notifications;
using Microsoft.Owin.Security.OpenIdConnect;
using Owin;

我尝试更新packages.config,Web.config和csproj文件以确保版本完全相同,最新,并且提示路径正确指向我的packages文件夹(它是)。我也尝试通过nuget控制台(Update-Package -reinstall)重新安装它,并确保安装和更新System.IdentityModel.Tokens.Jwt的依赖性,但仍然没有运气。

我想知道它是否与其他类似名称的Microsoft.IdentityModel包的使用有关,而Visual Studio因此而变得混乱,因为Extensions包确实存在:https://www.nuget.org/packages/Microsoft.IdentityModel.Protocol.Extensions/

摘自我的packages.config

<package id="Microsoft.IdentityModel.Protocol.Extensions" version="1.0.2.206221351" targetFramework="net451" />
<package id="Microsoft.IdentityModel" version="6.1.7600.16394" targetFramework="net451" />
<package id="Microsoft.IdentityModel.Clients.ActiveDirectory" version="2.16.204221202" targetFramework="net451" />
<package id="System.IdentityModel.Tokens.Jwt" version="4.0.2.206221351" />

还应该注意,我正在通过packages.config文件使用nuget包恢复策略。

1 个答案:

答案 0 :(得分:1)

Microsoft.IdentityModel.Protocol.Extensions NuGet包中包含一个名为Microsoft.IdentityModel.Protocol.Extensions.dll的程序集,但此程序集中可用的名称空间为:

  • Microsoft.IdentityModel.Extensions
  • Microsoft.IdentityModel.Protocols
  • Microsoft.IdentityModel.Tokens

以上命名空间取自NuGet包中包含的Microsoft.IdentityModel.Protocol.Extensions.xml文件,但您也可以从GitHub上的源代码获取它们。

因此,Microsoft.IdentityModel.Protocol.Extensions NuGet包中没有Microsoft.IdentityModel.Protocol.Extensions命名空间应该是:

using Microsoft.IdentityModel.Extensions;