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

问题描述

| 我有一个asp.net组件的旧版本。我想在旧版本的同时使用新版本。 我使用“ 0”命令将两个程序集都放入了GAC中。现在,我想在每个“ 1”页面中加载特定版本的组件。 我怎样才能做到这一点? 我可以使用此代码吗?
<%@ Register assembly=\"<dllname>,Version=2.5.0.0,Culture=neutral,PublicKeyToken=.......\" Namespace=\"<dllNamespace>.\" TagPrefix=\"WG\" %>
    

解决方法

        您可以使用以下代码在运行时中创建所需版本的对象
  Object obj = Activator.CreateInstance(\"dllName\",\"dllNameSpace.ClassName\");
您可以引用Activator.CreateInstance或使用Activator.CreateInstance从字符串名称创建对象     ,        从技术上讲,是的,这可能与您要的
Register
属性有关。然而,这并不是一条真正容易的步行路线,因为它将充满奇怪的局限性。 我的建议是要么尽可能不执行任何操作,要么将不同版本的控件隔离在可以存在于单独类库中的用户控件中。您将获得程序集名称,例如:
controls_for_1_5
controls_for_2_5
,并在此处创建对该程序集的引用。 (当然可以选择名称)。如果您不注意的话,这种方式仍然会引起奇怪的错误,例如
Can\'t cast \'Namespace.ClassA\' to \'Namespace.ClassA\'
(是的,它们是相同的,不是错字)。 不过,除非您对.NET框架的更深层次有真正的深刻了解,否则我还是建议您不要这样做。