2011-05-27 85 views
3

我有一箇舊版本的asp.net組件。我想和舊版本一起使用更新的版本。如何在ASP.NET應用程序中使用相同程序集的兩個版本?

我使用gacutil.exe命令將兩個程序集都放入GAC。現在,我想在每個.aspx頁面中加載組件的特定版本。

我該怎麼做?

我可以使用這段代碼嗎?

<%@ Register assembly="<dllname>, Version=2.5.0.0, Culture=neutral, 
    PublicKeyToken=......." Namespace="<dllNamespace>." TagPrefix="WG" %> 

回答

0

可以使用用下面的代碼

Object obj = Activator.CreateInstance("dllName","dllNameSpace.ClassName"); 

創建運行時的版本的對象,你想你可以參考Activator.CreateInstanceUse Activator.CreateInstance to Create Objects from a String Name

+0

這是可能的解決方案之一。但我想在aspx代碼中使用庫。因爲這個DLL包含asp控件。我可以在aspx代碼中做類似的思考嗎? – arthur86 2011-05-29 22:13:31

+0

是的,只是你創建了一個你想要的dll實例,你將它用作你的aspx頁面中的任何對象。 – 2011-05-30 14:43:15

0

Technicly是的,這可能與Register財產你在問。然而,這並不是一條非常容易走的路,因爲它會受到奇怪的限制。

我的建議是如果可能的話,不要做任何事情,要麼隔離usercontrols中可以存在於不同類庫中的不同版本的控件。你會得到如下組件名稱:controls_for_1_5controls_for_2_5,並在這裏創建對組件的引用。 (這些名字當然可供您選擇)。如果你不小心,這種方式仍然會導致奇怪的錯誤,如Can't cast 'Namespace.ClassA' to 'Namespace.ClassA'(是的,它們是相同的,不是錯字)。

我的建議是,除非你對.NET框架的深層部分有真正的強烈理解,否則不要去做。

+0

我不明白你的解決方案。如果我創建兩個程序集,每個都引用特定的dll,如何使用Register命令添加庫?通過註冊,我必須手動添加程序集名稱和名稱空間,但是兩個版本具有相同的名稱和名稱空間。 – arthur86 2011-05-29 22:30:45

+0

如果您在標籤中指定了一個版本,那麼.NET將在GAC中查找該特定版本 – 2011-06-02 19:08:06

相關問題