一尘不染

使用同一DLL的多个版本

c#

我的任务是为应用程序创建新模块,因此,我正在向项目中添加新的DLL。一切都很好。

但是,在我的DLL中,我想使用外部DLL的新版本(无法控制)。如果我仅引用新的DLL并仅使用该DLL,则我的代码可以工作,但是旧代码将停止运行。

Could not load file or assembly 'itextsharp, Version=5.0.6.0, Culture=neutral,
PublicKeyToken=8354ae6d2174ddca' or one of its dependencies. The located assembly's
manifest definition does not match the assembly reference. (Exception from HRESULT:
0x80131040)

我尝试了一个简单的技巧来更改DLL的名称,但这显然对我来说太天真了,以至于认为它不会起作用。我尝试使用外部别名(通过在引用中定义它们),但我仍然不知道如何将两个具有相同名称的文件放入一个BIN文件夹中…

我该怎么办?


阅读 322

收藏
2020-05-19

共1个答案

一尘不染

您可以将另一个版本加载到特定的AppDomain中

可能太详细了,但是这里是一篇文章,演示了在有用的环境中使用AppDomains及其工作方式:

http://msdn.microsoft.com/zh-
CN/magazine/cc164072.aspx

从最基本的意义上讲,它取决于以下示例代码:

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

    static System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
    {
        if (/*some condition*/)
            return Assembly.LoadFrom("DifferentDllFolder\\differentVersion.dll");
        else
            return Assembly.LoadFrom("");
    }
2020-05-19