如何在ASP.NET应用程序中使用同一程序集的两个版本?

时间:2011-05-27 16:07:29

标签: c# asp.net dll version gac

我有 asp.net 组件的旧版本。我想在旧版本旁边使用更新的版本。

我使用gacutil.exe命令将两个程序集放在GAC中。现在,我想在每个.aspx页面中加载特定版本的组件。

我该怎么做?

我可以使用此代码吗?

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

2 个答案:

答案 0 :(得分:0)

您可以使用以下代码

在运行时创建所需的版本对象
  Object obj = Activator.CreateInstance("dllName","dllNameSpace.ClassName");

您可以参考Activator.CreateInstanceUse Activator.CreateInstance to Create Objects from a String Name

答案 1 :(得分:0)

技术上是的,您可能会询问Register属性。然而,走路并不是一条非常简单的道路,因为它会受到奇怪的限制。

我的建议是,如果可能的话,要么根本不这样做,要么在用户控件中隔离不同版本的控件,这些控件可以存在于单独的类库中。您将获得如下组件名称:controls_for_1_5controls_for_2_5,并在此处创建对程序集的引用。 (名称当然可供您选择)。这种方式仍然会导致奇怪的错误,如Can't cast 'Namespace.ClassA' to 'Namespace.ClassA'(是的,它们是相同的,不是拼写错误),如果你不小心的话。

除非你真正了解.NET框架的更深层次,否则我的建议仍然是不要这样做。