我有以下問題:
我有一個解決方案,例如, 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