Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在ASP.NET应用程序中使用同一程序集的两个版本?_C#_Asp.net_Dll_Version_Gac - Fatal编程技术网

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

C# 如何在ASP.NET应用程序中使用同一程序集的两个版本?,c#,asp.net,dll,version,gac,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>." TagPr

我有一个旧版本的asp.net组件。我想在旧版本的基础上使用新版本

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

我该怎么做

我能用这个密码吗

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

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

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

您可以在技术上参考或

是的,可以使用您所询问的
寄存器
属性。然而,这不是一条真正容易走的道路,因为它将充满奇怪的限制

我的建议是,如果可能的话,或者根本不这样做,或者在usercontrols中隔离不同版本的控件,这些控件可以存在于单独的类库中。您将获得程序集名称,如:
controls\u for_1\u 5
controls\u for_2\u 5
,并在此处创建对程序集的引用。(名称当然由您选择)。如果您不小心,这种方法仍然会导致奇怪的错误,如
无法将“Namespace.ClassA”转换为“Namespace.ClassA”(是的,它们是相同的,不是打字错误)


不过,我的建议是,除非您对.NET框架的深层部分有真正深入的了解,否则不要这样做。

这是一种可能的解决方案。但是我想使用aspx代码中的库。因为此dll包含asp控件。我可以在aspx代码中做类似的思考吗?是的,只要你创建了一个你想要的dll实例,你就可以将它作为aspx页面中的任何对象使用。我不理解你的解决方案。如果我创建两个程序集,每个程序集都引用特定的dll,那么如何使用Register命令添加库?对于register,我必须手动添加程序集名称和命名空间,但两个版本具有相同的名称和命名空间。如果在标记中指定一个版本,则.NET将在GAC中查找该特定版本