20

我正在开发一个 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

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

4

1 回答 1

5

Compiler Error CS0433的链接清楚地表明,核心问题不在于引用的程序集的多个版本 - 而是名称空间 + 类型名冲突。

当您加载/引用一个类型时 - 编译器无法解析从哪个 DLL 加载该类型。如果 Sharepoint 将加载您的两个 DLL 版本(正如您所说的那样) - 这个错误总是会出现。

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

于 2013-07-22T14:33:33.430 回答