exe和dll引用具有相同名称和相同名称空间的dll

时间:2011-12-28 12:26:25

标签: c# .net visual-studio-2010 dll

我有以下问题:
我在一个解决方案中有两个项目,例如Core.prjExtension.prj
现在,Core.prj引用名为profile.dll(v1)的dll,Extension.prj引用具有相同名称和相同名称空间但不同版本profile.dll(v2)的dll。 Extension.prj也引用Core.prj项目 Core.prj有一个源文件,例如A.cs,其中定义了一些虚拟方法。 Extension.prj有一个源文件,例如B.cs,其中有一些方法会覆盖A.csCore.prj中定义的虚拟方法。

我的想法是构建并运行Extension.prj并从A.cs中的覆盖方法调用B.cs中的虚拟方法。现在,B.cs中的方法将使用profile.dll(v2)中的类型,A.cs中的方法将使用来自profile.dll(v1)的类型,但这是不可能的,因为虚拟A.cs中的方法使用profile.dll(v2)中的类型而不是profile.dll(v1)中的类型。

这个想法是从exe和dll引用不同版本的dll,具有相同的名称和命名空间,无论如何都可行吗?

1 个答案:

答案 0 :(得分:1)

我认为在这种情况下你可以使用extern alias指令。

来自MSDN:

  

要引用具有相同完全限定类型名称的两个程序集,   必须在命令提示符下指定别名,如下所示:

     

/r:GridV1=grid.dll

     

/r:GridV2=grid20.dll

     

这将创建外部别名GridV1和GridV2。要使用这些   程序中的别名,使用extern引用它们   关键词。例如:

     

extern别名GridV1;

     

extern别名GridV2;

http://msdn.microsoft.com/en-us/library/ms173212.aspx