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

本文关键字:两个 应用程序 NET 版本 程序集 ASP | 更新日期: 2023-09-27 17:57:45

我有一个asp.net组件的旧版本。我想在使用旧版本的同时使用新版本。

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

我该怎么做?

我可以用这个代码吗?

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

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

您可以使用以下代码在运行时创建所需版本的对象

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

您可以参考Activator。CreateInstance或Use Activator。CreateInstance从字符串名称创建对象

技术上是的,您询问的Register属性有可能。然而,这不是一条真正容易走的路,因为它将充满奇怪的局限性。

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

尽管如此,我的建议是,除非你对事物的深层次有真正深刻的理解,否则不要这样做。NET框架。