我如何指示依赖程序集的多个版本都可以?

时间: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上的重定向程序集版本的信息,以确定哪种方法最适合情况。