我的项目引用了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
我认为强名称程序集需要特定的版本号,所以我不认为引用本身可以使用通配符(*)?解决我的场景的最简单方法是什么?
答案 0 :(得分:1)
解决方案是使用bindingRedirect。显然,如果oldVersion高于newVersion,它会起作用,就像在我的场景中一样。 http://www.infosysblogs.com/microsoft/2007/04/loading_multiple_versions_of_s.html
没有代码更改 - 简单的配置添加。
答案 1 :(得分:0)
如果您需要动态加载任意程序集和类,可以使用Assembly.Load
(或其中一个变体)和Assembly.CreateInstance()
。
你需要这样做的原因是它允许后期绑定。在GAC中引用程序集是一种早期绑定方案,在运行时无法进行更改。