如何引用多版本程序集
Posted
技术标签:
【中文标题】如何引用多版本程序集【英文标题】:How to reference to multiple version assembly 【发布时间】:2010-09-05 12:25:51 【问题描述】:我正在开发一个 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
有人可以帮助我了解如何在应用程序中使用多个版本的程序集吗?
【问题讨论】:
你在同一个控件中使用不同的程序集版本吗?还是同一个项目,但控件不同? 【参考方案1】:Compiler Error CS0433 的链接清楚地表明,核心问题不在于引用的程序集的多个版本 - 而是名称空间 + 类型名冲突。
当您加载/引用一个类型时 - 编译器无法解析从哪个 DLL 加载该类型。如果 Sharepoint 将加载您的两个 DLL 版本(正如您所说的那样) - 这个错误总是会出现。
最简单的解决方法是更改新 DLL 中的命名空间,因为它确实有您的自定义调整,并且您可以控制代码 - 也清楚地标记它。
【讨论】:
以上是关于如何引用多版本程序集的主要内容,如果未能解决你的问题,请参考以下文章
程序集引用的“特定版本”属性在 Visual Studio 中究竟是如何工作的?
程序集引用的“特定版本”属性在 Visual Studio 中究竟是如何工作的?
PyTorch学习7《PyTorch深度学习实践》——MNIST数据集多分类(Softmax Classifier)