.net - 如何不需要特定版本的程序集

标签 .net version .net-assembly

我有一个正在处理的项目,它引用了一个引用程序集的程序集,如下所示:

Me
 |- A
 |  |- B v1.4.2
 |
 |- B v1.5

A 不需要引用 1.4.2具体来说,就是大于 1.4 的任何值或者。在 A 的属性中的引用,B 说“特定版本 = False”,但是当我运行 MeB v1.5 ,我得到一个 FileLoadException寻找 B v1.4.2 .但是,B v1.5是存在的,如何让 CLR 少关心?

最佳答案

尽管绑定(bind)重定向是这里的方法,但有时这是不可能的 - 即,如果您在另一个 EXE 中加载插件。我们采用的一个实际解决方案是 Hook AppDomain.CurrentDomain.AssemblyResolve事件,监听与 myassembly1.4.2.dll 的绑定(bind)失败(例如)并显式返回调用 System.Reflection.Assembly.LoadFrom("c:\assemblies\myassembly.1.5.0.dll") 返回的程序集反而。绑定(bind)重定向更好,但有时并不实用。

关于.net - 如何不需要特定版本的程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11478791/

相关文章:

c# - 每 0.1 毫秒和 0.3 毫秒重复两个任务(Systems.Timer.Timer 不够精确)

c# - 判断用户是否登录

perl - 如何检查 CPAN 上的模块是否比我在项目中捆绑的模块新?

java - 如何在多模块 Maven 项目中自动重用依赖版本?

c# - 调用 Assembly.Load(byte[]) 可以引发 AppDomain.AssemblyResolve 事件吗?

c# - 为泛型类实现 IComparable<T> 接口(interface)以比较类型 T

c# - 如何从 WinUI 3 C# 应用程序托管 PowerShell 5

java - 不支持的 major.minor 版本 52.0

c# - "Can' t 在指定文件夹中找到 .NET 程序集 {AssemblyName}”

c# 在导出 DLL 时隐藏类成员