.net 无论版本如何,如何引用DLL?

.net 无论版本如何,如何引用DLL?,.net,vb.net,compiler-construction,reference,version,.net,Vb.net,Compiler Construction,Reference,Version,好的,我是Telerik控件库的忠实用户,特别是ASP.NET。但是,我想在一些控件中添加一点功能。现在,我可以使用扩展方法轻松地完成这项工作。所以我写了一个小图书馆,就是这样做的。显然,这个库需要引用它们的DLL(Telerik.Web.UI.DLL) 在我的DLL项目的myproject>References页面中,我有一个对Telerik.Web.UI.DLL的引用。对于此引用,我将特定版本的属性设置为False,因为我不希望我的库关心正在使用的Telerik DLL的版本。但这是我的问题

好的,我是Telerik控件库的忠实用户,特别是ASP.NET。但是,我想在一些控件中添加一点功能。现在,我可以使用扩展方法轻松地完成这项工作。所以我写了一个小图书馆,就是这样做的。显然,这个库需要引用它们的DLL(
Telerik.Web.UI.DLL

在我的DLL项目的
myproject>References
页面中,我有一个对
Telerik.Web.UI.DLL
的引用。对于此引用,我将特定版本的属性设置为False,因为我不希望我的库关心正在使用的Telerik DLL的版本。但这是我的问题。。。.NET编译器似乎不支持此设置

举个例子,我有一个网站,它引用了Telerik DLL和我的DLL。我将Telerik库更新为最新版本。现在,当我尝试运行我的网站时,我得到:

无法加载文件或程序集“Telerik.Web.UI,Version=2012.1.215.40,Culture=neutral,PublicKeyToken=121fae78165ba3d4”或其依赖项之一。定位的程序集清单定义与程序集引用不匹配。(HRESULT的例外:0x8013100)


我通过转到我的DLL项目,根据最新的Telerik DLL重新编译它,然后在网站上更新我的DLL来解决这个问题。这正是我不想每次更新Telerik的库时都要做的。我认为特定版本设置为false意味着它可以用于任何版本。不还是我完全误解了该设置的作用?

您应该研究一下如何使用它,它将允许您指示.NET framework在运行时使用另一个版本的程序集
(也就是说,如果您的项目是根据1.0版编译的,那么假设没有API更改,它仍然可以使用1.1版)


特定版本
属性仅适用于编译时程序集引用。

啊,看起来很有趣。但从MSDN链接中可以看出,每次更新Telerik DLL时,仍然需要我触摸我的DLL项目。我尝试做的全部工作是不必用每个属性更新我的库项目新的Telerik版本,除非Telerik库中的某些东西特别破坏了我代码中的某些内容。是的,您仍然需要对web.config进行更改,但不需要重新编译dll。但现在这实际上需要更多的工作,因为我在许多网站中使用这两个库,所以如果我必须触摸web.config与DLL不同的是,它有很多地方可以接触,而不是一个。至少重新编译DLL是一个集中的更改。另一个选项是重写
AppDomain.AssemblyResolve
事件中的默认程序集加载行为,这样,当找不到特定的DLL版本时,它不会引发异常,而是将更新的DLL加载到AppDom中ain。以下是MSDN参考: