加载任何版本的静态引用的.NET程序集

时间:2015-12-10 02:21:32

标签: c# .net .net-assembly assembly-resolution

我正在研究一种使用其他产品的.NET程序集的工具。在我的项目中静态引用了一些程序集(使用“Add Reference”),因为我需要在代码中实际使用这些类型。但是我从产品的安装目录动态加载了许多其他程序集,使用反射来动态实例化我需要的任何对象。

我不想为我依赖的产品的每个可能版本重新编译和发布我的项目的单独版本。 我需要的程序集的某些版本肯定会出现在应用程序安装目录中,所以我想使用碰巧安装的任何版本的程序集。但它可能与我最初在构建工具时使用的程序集完全相同。 (产品版本控制策略使得产品中的所有程序集都具有相同的版本号,这会更改每个版本,即使我需要静态引用的特定程序集自上一版本以来没有更改,或者支持100%的我需要的API。

有可能实现这个目标吗?

Assembly Version redirects允许我在请求该程序集的不同版本时加载特定版本的程序集。我的情况与此相反;我想加载碰巧出现的任何版本。

1 个答案:

答案 0 :(得分:3)

您可以绑定到AppDomain.CurrentDomain.AssmeblyResolve事件并自行处理解决方案。