无法加载文件或程序集' Microsoft.IdentityModel.Clients.ActiveDirectory'

时间:2016-11-25 07:17:15

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

以下是我在运行.NET应用程序时遇到的确切异常。

  

未处理的类型' System.IO.FileNotFoundException'   发生在Generic.Helpers.dll

中      

其他信息:无法加载文件或程序集   ' Microsoft.IdentityModel.Clients.ActiveDirectory,Version = 2.28.1.741,   Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其中一个   依赖。系统找不到指定的文件。

我有一个引用私有程序集(.dll)的控制台应用程序。程序集引用了Microsoft.IdentityModel.Clients.ActiveDirectory,我还在项目中为此添加了一个NuGet包

<package id="Microsoft.IdentityModel.Clients.ActiveDirectory" version="2.28.1" targetFramework="net46" />

我可以看到DLL在项目中被正确引用。但是,在运行应用程序时,我收到了如上所述的错误。

只是为了简要介绍一下类库项目 - 这个DLL有连接到CRM web api的方法。这工作正常,直到最后几天,突然停止工作并抛出错误。

我也在Azure功能中使用相同的DLL,这是完全正常的。

有人可以建议如何解决这个问题吗?

5 个答案:

答案 0 :(得分:1)

你可能没有特定的版本吗?您是否尝试在属性中将特定版本设置为false?

NuGet无法处理程序中的引用。它只是管理包。这个问题与visual studio有关。如果NuGet更新了一些软件包并且您的程序要求提供特定版本,那么您肯定会遇到问题。

答案 1 :(得分:0)

这是我的情况,对我有用:

我在类库项目中使用Microsoft.IdentityModel.Clients.ActiveDirectory版本3.19,但在实际的ASP.NET Web应用程序项目中只安装了版本2.22。在Web应用程序项目中升级到3.19让我超越了错误。

答案 2 :(得分:0)

当我将dll从3.19降级到2.28.3版本以支持“ AcquireTokenByAuthorizationCode”功能时,发生了这种情况。重新安装后,它仍重定向到3.19版,因为它仍绑定到web.config文件中的3.19版。我确实找到了所有用文件类型搜索3.19的内容,并注释了引用3.19的设置。就像下面的web.config中的

<!--<dependentAssembly>
        <assemblyIdentity name="Microsoft.IdentityModel.Clients.ActiveDirectory" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.19.8.16603" newVersion="3.19.8.16603" />
      </dependentAssembly>-->

答案 3 :(得分:0)

当解决方案中所有项目的nuget软件包版本都不相同时,就会发生这种情况。 解决方案-> Nuget程序包管理器->浏览程序包

如果有不同的版本,请在项目之间使它们统一。问题应该解决。

答案 4 :(得分:0)

我通过切换到 PowerShell 5.1 解决了这个问题