【问题标题】:reference GAC assembly with fallback version参考具有后备版本的 GAC 程序集
【发布时间】:2011-05-10 15:02:53
【问题描述】:

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

一些研究提出了以下帖子,但它们似乎与我的场景没有直接关系:
How to provide a fallback assembly instead of the one that can't be loaded?
How to reference to multiple version assembly

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

【问题讨论】:

    标签: c# .net .net-4.0 gac .net-assembly


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 有更简单的解决方案吗?这需要代码工作,而不是配置工作。
      • 没有。这就是你要做的。它实际上并不像看起来那么难,并且允许各种灵活的场景,如插件架构。
      猜你喜欢
      • 2014-05-15
      • 2012-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多