无法加载文件或程序集“Microsoft.IdentityModel.Clients.ActiveDirectory,版本=3.19.8.16603。与程序集引用不匹配
Could not load file or assembly 'Microsoft.IdentityModel.Clients.ActiveDirectory, Version=3.19.8.16603. does not match the assembly reference
solution.One中有两个项目是API,另一个是OrganizationServiceCall。
我安装了一个名为 Microsoft.CrmSdk.XrmTooling.CoreAssembly 的 nuget 包,它安装了默认包 Microsoft.IdentityModel.Clients.ActiveDirectory,版本 =3.19.8.1660。
但我已经安装了 Microsoft.IdentityModel.Clients.ActiveDirectory,其他 project.While 版本=2.22 调用 API 我得到了这个错误:
{“无法加载文件或程序集‘Microsoft.IdentityModel.Clients.ActiveDirectory,版本=3.19.8.16603”}。
当同一个解决方案有不同版本的 nuget pacakge 冲突时我如何完成工作?
您可以尝试一些解决方法
如果第二个项目api最新版本没有问题,也可以尝试升级到Microsoft.IdentityModel.Clients.ActiveDirectory版本3.19.8
或者如果可以的话,将所有的NuGet包更新到最新的。
或者可能需要手动编辑您的 csproj 以在特定项目中添加该特定版本。
在配置文件中使用带有绑定重定向的单个程序集版本
i) NuGet 不会处理程序中的引用。它只是
管理包。我们可能不得不强制我们的项目使用
使用绑定重定向加载程序集。
ii) 这指定使用哪个版本的程序集而不是旧版本
版本。不一定需要指定更高版本
在 newVersion 中,也可以提供早期版本
新版本。如果有不同的版本,尽量统一
跨项目。问题应该已经解决了。
这里一个项目是指ActiveDirectory版本> 3.0,其他
项目需要的版本更少。添加绑定重定向到
app.config 在某些情况下可以帮助解决问题。但在那之前
请确保特定的 dll 存在于
配置文件。
请注意,运行时部分是要添加的部分。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
...
<runtime>
....
<dependentAssembly>
<assemblyIdentity
name="Microsoft.IdentityModel.Clients.ActiveDirectory" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="3.0.0.0-3.19.8.16603" newVersion="3.19.8.16603" />
</dependentAssembly>
.....
</runtime>
</configuration>
并尝试显式设置 特定版本 为任何 DLL 给你版本问题 (Microsoft.IdentityModel.Clients.ActiveDirectory) 到 False 来自 Visual Studio。
其他方法,你可以试试auto-generate绑定重定向.
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
参考文献:
solution.One中有两个项目是API,另一个是OrganizationServiceCall。
我安装了一个名为 Microsoft.CrmSdk.XrmTooling.CoreAssembly 的 nuget 包,它安装了默认包 Microsoft.IdentityModel.Clients.ActiveDirectory,版本 =3.19.8.1660。
但我已经安装了 Microsoft.IdentityModel.Clients.ActiveDirectory,其他 project.While 版本=2.22 调用 API 我得到了这个错误:
{“无法加载文件或程序集‘Microsoft.IdentityModel.Clients.ActiveDirectory,版本=3.19.8.16603”}。
当同一个解决方案有不同版本的 nuget pacakge 冲突时我如何完成工作?
您可以尝试一些解决方法
如果第二个项目api最新版本没有问题,也可以尝试升级到Microsoft.IdentityModel.Clients.ActiveDirectory版本3.19.8
或者如果可以的话,将所有的NuGet包更新到最新的。
或者可能需要手动编辑您的 csproj 以在特定项目中添加该特定版本。
在配置文件中使用带有绑定重定向的单个程序集版本
i) NuGet 不会处理程序中的引用。它只是 管理包。我们可能不得不强制我们的项目使用 使用绑定重定向加载程序集。
ii) 这指定使用哪个版本的程序集而不是旧版本 版本。不一定需要指定更高版本 在 newVersion 中,也可以提供早期版本 新版本。如果有不同的版本,尽量统一 跨项目。问题应该已经解决了。
这里一个项目是指ActiveDirectory版本> 3.0,其他 项目需要的版本更少。添加绑定重定向到 app.config 在某些情况下可以帮助解决问题。但在那之前 请确保特定的 dll 存在于 配置文件。
请注意,运行时部分是要添加的部分。
<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> ... <runtime> .... <dependentAssembly> <assemblyIdentity name="Microsoft.IdentityModel.Clients.ActiveDirectory" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="3.0.0.0-3.19.8.16603" newVersion="3.19.8.16603" /> </dependentAssembly> ..... </runtime> </configuration>
并尝试显式设置 特定版本 为任何 DLL 给你版本问题 (Microsoft.IdentityModel.Clients.ActiveDirectory) 到 False 来自 Visual Studio。
其他方法,你可以试试auto-generate绑定重定向.
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
参考文献: