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

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

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

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

这有可能实现吗?

Assembly Version redirects允许我在请求程序集的不同 版本时加载该程序集的特定版本。我的情况正好相反;我想加载恰好存在的任何版本。

最佳答案

您可以绑定(bind)到 AppDomain.CurrentDomain.AssmeblyResolve 事件并自行处理解析。

关于c# - 加载任何版本的静态引用 .NET 程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34192659/

相关文章:

.net - NHibernate 自定义 SQL 对象创建

c# - 弱装配改为强装配

c# - 获取程序集可执行目录

c# - 为什么 XmlSerializer 抛出 InvalidOperationException?

c# - 为什么这个赋值不是线程安全的?

c# - 如何替换 URL 中的特殊字符?

c# - 为什么我不能序列化具有私有(private) setter 的属性(C#、json)

C#无限迭代

c# - 数据表转 JSON

c# - 在运行时加载程序集 .NET 6