以下是我在运行.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,这是完全正常的。
有人可以建议如何解决这个问题吗?
答案 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 解决了这个问题