无论版本如何,我如何引用DLL?

eid*_*lon 17 .net vb.net compiler-construction reference version

好的,我是Telerik控件库的重要用户,专门用于ASP.NET.但是,我想在一些控件中添加一些功能.现在我可以使用Extension方法轻松完成这项工作.所以我写了一个小型图书馆.显然,这个库需要引用它们的DLL(Telerik.Web.UI.dll).

My Project > References我的DLL项目的页面中,我有一个参考Telerik.Web.UI.dll.对于此参考,我将Specific Version属性设置为False,因为我不希望我的库关心正在使用的Telerik DLL的版本.这是我的问题但是...... .NET编译器似乎不尊重这个设置.

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

Could not load file or assembly 'Telerik.Web.UI, Version=2012.1.215.40, Culture=neutral, PublicKeyToken=121fae78165ba3d4' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

我通过转到我的DLL项目,针对最新的Telerik DLL重新编译它,然后在网站中更新我的DLL来解决这个问题.这正是我每次更新Telerik库时都不想要做的事情.我认为特定版本设置为false意味着它适用于任何版本.没有?或者我完全误解了那个设置的作用?

Blu*_*ict 4

您应该考虑使用它,它允许您指示 .NET 框架在运行时bindingRedirect使用另一个版本的程序集(即,如果您的项目是针对版本 1.0 编译的,它仍然可以使用版本 1.1,假设没有 API 更改)。

Specific Version属性仅适用于编译时程序集引用。

  • 另一种选择是覆盖“AppDomain.AssemblyResolve”事件中的默认程序集加载行为,以便在找不到特定 dll 版本时不会抛出异常,而是将更新的 dll 加载到 AppDomain 中。这是MSDN参考:http://msdn.microsoft.com/en-us/library/system.appdomain. assemblyresolve.aspx (2认同)