如何引用多版本程序集

How to reference to multiple version assembly

提问人:Fajar 提问时间:8/8/2008 最后编辑:Rashed HasanFajar 更新时间:2/24/2020 访问量:4995

问:

我正在开发一个 Sharepoint 应用程序并使用 .NET AjaxControlToolkit 库,我们正在向 SharePoint 添加一个自定义 aspx 页面。Sharepoint 2007 在 Quirks 模式下运行,因此我对 AJAX 库进行了一些修改,使其行为正常。问题是,另一个团队已经使用了 AJAX 库,它与我的版本不同。这导致了冲突,因为 bin 文件夹中可能只有一个同名的 dll。

据我所知,.NET 应该能够轻松处理这种情况。我尝试使用强名称和 GAC 来解决它,但它仍然引用 bin 文件夹中的 dll。如果 bin 文件夹中没有 AjaxControlToolkit.dll,则应用程序将无法加载程序集。

如果我像这样使用完整的组装信息

<%@ 
    Register 
    tagprefix="AjaxControlToolkit"
    namespace="AjaxControlToolkit"
    assembly="AjaxControlToolkit, Version=1.0.299.18064, 
    PublicKeyToken=12345678abcdefgh, 
    Culture=neutral"
%>

它给了我编译器错误CS0433

有人可以帮我如何在应用程序中使用多个版本的程序集吗?

C# .NET SharePoint 程序集

评论

0赞 Machinegon 7/22/2013
是否在同一控件中使用不同的程序集版本?还是同一个项目但不同的控件?

答:

5赞 Vivek 7/22/2013 #1

编译器错误 CS0433 的链接非常清楚地表明,核心问题不在于引用程序集的多个版本,而在于命名空间 + 类型名称冲突。

加载/引用类型时 - 编译器无法解析要从哪个 DLL 加载该类型。如果 Sharepoint 要加载您的两个 DLL 版本(正如您所说的那样),则此错误将始终出现。

最简单的解决方法是更改新 DLL 中的命名空间,因为它确实具有自定义调整,并且您可以控制代码 - 也清楚地标记它。