我有以下问题:
我有一个解决方案,例如, Core.prj
和Extension.prj
。
现在,Core.prj
引用了一个名为profile.dll
(v1)和Extension.prj
的dll,它引用了具有相同名称和相同名称空间但不同版本profile.dll
(v2)的dll。 Extension.prj
也参考Core.prj
项目。
Core.prj
具有源文件,例如, A.cs
,其中定义了一些虚拟方法。 Extension.prj
有一个源文件,例如B.cs
它有一些方法覆盖A.cs
中定义的虚拟方法,从Core.prj
。exe和dll引用dll具有相同的名称和相同的命名空间
我的想法是构建并运行Extension.prj
,并在B.cs
中调用A.cs
中的虚拟方法来避免重写方法。现在,在B.cs
方法将使用类型从profile.dll
(V2)和方法A.cs
将使用类型从profile.dll
(V1),但这是不可能的,因为从A.cs
使用类型的虚拟方法从profile.dll
(V2),而不是从profile.dll
(V1 )。
这种想法引用不同版本的DLL,具有相同的名称和命名空间,从EXE和DLL无论如何可行?
我知道你可能有你的理由,但使用不同的版本在运行同一个库的是要不惜一切代价避免的噩梦。您当然可以在环境中使用同一个库的不同版本,只需使用程序集重定向来“升级”应用程序使用的版本,但通常应用于整个解决方案,而不是解决方案内部。 – 2011-12-28 12:42:05