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

7
以下是我运行.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,那里它完美地工作。
请问有人能提供如何解决这个问题的建议吗?

也许你没有那个特定的版本?你尝试在属性中将特定版本设置为false了吗? - Prajwal
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Ali Bahrami
@Ali - DLL架构看起来没问题,它是x64的,而这个Nuget包没有针对32位和64位版本的特定程序集。 - Nirman
@Nirman NuGet不会处理程序中的引用。它只管理软件包。这个问题出现在Visual Studio中。如果Nuget更新了一些软件包,而你的程序要求特定版本,那么你肯定会遇到问题。 - Prajwal
@Prajwal - 是的,通过卸载和重新安装Nuget包,问题得到了解决。我没有将特定版本属性更改为False,但我会这样做,以便将来不会遇到此问题。然而,我仍然认为Nuget应该自动管理这个问题。请在答案中发表您的评论,我会标记它。谢谢。 - Nirman
显示剩余6条评论
6个回答

3

也许你没有那个特定的版本?你尝试在属性中将特定版本设置为false了吗?

NuGet不会处理程序中的引用,它只管理包。这个问题是与Visual Studio有关的。如果NuGet更新了一些包并且你的程序要求特定版本,那么你肯定会遇到问题。


1
当解决方案中所有项目的Nuget软件包版本不同时,就会出现这种情况。 解决方案->Nuget软件包管理器->浏览软件包。
如果有不同的版本,请使它们在所有项目中保持一致。问题应该得到解决。

1
这是我的情况和解决方法:
我在一个类库项目中使用了Microsoft.IdentityModel.Clients.ActiveDirectory版本3.19,但实际的ASP.NET Web应用程序项目中只安装了版本2.22。将Web应用程序项目升级到3.19可以解决错误。

0

删除项目中的\bin和\obj文件夹,解决了我的问题。

(其他解决方案无效——实际版本已经正确匹配)。


0

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


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>-->

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接