引用具有回退版本的 GAC 程序集

本文关键字:GAC 程序集 版本 回退 引用 | 更新日期: 2023-09-27 17:55:44

我的项目引用了 GAC 中程序集的版本 2.0.0.0。 如果版本 2.0.0.0 不可用,我想重定向/更改对版本号 1.0.0.0 的引用。

一些研究提出了以下帖子,但它们似乎与我的场景没有直接关系:
如何提供回退程序集而不是无法加载的程序集?
如何引用多版本程序集

我相信强名称程序集需要特定的版本号,所以我认为引用本身不能使用通配符 (*)? 解决我的场景的最简单方法是什么?

引用具有回退版本的 GAC 程序集

解决方案是使用绑定重定向。 显然,如果旧版本高于新版本,它就可以工作,就像我的情况一样。http://www.infosysblogs.com/microsoft/2007/04/loading_multiple_versions_of_s.html

无需更改代码 - 简单的配置添加。

如果需要动态加载任意程序集和类,可以使用Assembly.Load(或其变体之一)和Assembly.CreateInstance()

您需要这样做的原因是它允许后期绑定。 在 GAC 中引用程序集是一种早期绑定方案,不能在运行时进行更改。