相同DLL的C#多个版本

时间:2018-11-05 20:14:53

标签: c# dll

我有一个需要Newtonsoft.Json DLL版本10的C#类库(项目A)。

但是然后我有另一个C#类库(项目B),它需要Newtonsoft.Json DLL版本6。

我无法将项目B升级为使用10,因为重大更改太多。

是否可以同时存在两个版本?

我的问题是项目A具有Google.Apis依赖关系,而该依赖关系依赖于Newtonsoft.Json DLL,因此我不能简单地重命名DLL并将它们都放在同一目录中。

我已经看到其他解决方案提到了App.Config文件,但是由于这是一个类库,因此它没有配置文件。

反正有这样做吗?

1 个答案:

答案 0 :(得分:0)

也许这可以帮助:

使用AppDomain.CurrentDomain.AssemblyResolve构建事件并加载特定的dll。

AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);

public static System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
    //debug and check the name
    if (args.Name == "MyDllName")
        return Assembly.LoadFrom("c:\\pathdll\midllv1.dll")
    else if(args.Name ="MyDllName2")
        return Assembly.LoadFrom("c:\\pathdll\midllv2.dll");
    else
        return Assembly.LoadFrom("");
}