C# 如何在ASP.NET应用程序中使用同一程序集的两个版本?
我有一个旧版本的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
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中查找该特定版本