我试图将MangoChat集成到现有的.Net项目中。 Mango需要使用Newtonsoft.Json版本3.5.0.0,但我当前版本的此程序集是6.x.
逻辑上,我想卸载当前版本,但它有很多依赖项,它撕裂了项目。我无法在6.x旁边安装3.5.0.0版本,因为我无法将第二个程序集添加到同名的.bin文件夹中。
我该如何解决这个问题?
答案 0 :(得分:3)
如果版本6.x与版本3.5.0.0兼容,则可以将绑定重定向添加到新版本。您应该将它添加到配置文件中:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="[enter token here]" culture="neutral" />
<bindingRedirect oldVersion="3.5.0.0-6.X" newVersion="6.X"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
将6.X替换为您的实际版本。
另一种选择是将程序集添加到不同的文件夹,并在AppDomain上使用AssemblyResolve事件来查找它。你可以使用这样的代码:
//Load assembly from alternative location
Assembly newtonsoftAssembly = Assembly.LoadFrom(@"C:\PathToYourAssembly.dll");
//Handle AssemblyResolve event
AppDomain.CurrentDomain.AssemblyResolve += (sender, args) =>
{
//Check if your assembly was requested
if (args.Name.Contains("Newtonsoft.Json"))
{
return newtonsoftAssembly;
}
return null;
};
您应该运行此代码一次,例如在应用程序启动期间。