汇编参考第22条



我试图将MangoChat集成到现有的。net项目中。Mango需要使用Newtonsoft。Json版本3.5.0.0,但是我当前的版本是6.x。

从逻辑上讲,我想卸载当前版本,但它有太多的依赖关系,它撕裂了项目。我不能安装版本3.5.0.0旁边的6。因为我不能添加第二个具有相同名称的程序集到.bin文件夹。

我该如何解决这个问题?

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

你应该运行这段代码一次,例如在应用程序启动时。

最新更新