我的任务是为应用程序创建新模块,因此,我正在向项目中添加新的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文件夹中…
我该怎么办?
您可以将另一个版本加载到特定的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(""); }