我如何指示依赖程序集的多个版本都可以?
时间:2020-03-05 18:50:51 来源:igfitidea点击:
程序集A和B是私下部署的,并且具有强烈的名称。程序集A包含对程序集B的引用。程序集B有两种版本:B1和B2. 我希望能够通过将这些信息合并到程序集本身中来为程序集A表示它可以理想地绑定到B1或者B2. 我有什么选择?
我对版本控制政策及其适用于GAC的方式有些熟悉,但是我不想依赖于GAC中的这些程序集。
解决方案
回答
我们可以在app.config文件中设置版本策略。另外,我们可以在不考虑组件版本的情况下,通过调用Assembly.LoadFrom()
来手动加载这些组件。
回答
我们可以在.Net Framework的多个位置中指出,应优先使用强版本库的特定版本而不是另一个版本。这些是:
- 发布者政策文件
- machine.config文件
- app.config文件
所有这些方法都利用" <bindingRedirect>"元素,该元素可以指示.Net Framework将程序集的版本或者版本范围绑定到特定版本。
这是一个用于将程序集的所有版本绑定到版本2.0到版本2.5的标记的简短示例:
<assemblyBinding> <dependantAssembly> <assemblyIdentity name="foo" publicKeyToken="00000000000" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0 - 2.0.0.0" newVersion="2.5.0.0" /> </dependantAssembly> </assemblyBinding>
有很多细节,因此最好阅读有关MSDN上的重定向程序集版本的信息,以确定哪种方法最适合情况。