如何指示依赖程序集的多个版本是否正常?

时间:2008-09-10 16:10:35

标签: .net versioning

程序集A和B是私有部署和强名称。程序集A包含对程序集B的引用。程序集B有两个版本:B1和B2。我希望能够为程序集A指出它可以绑定到B1或B2 - 理想情况下,通过将此信息合并到程序集本身。我有什么选择?

我对版本控制策略及其适用于GAC的方式有些熟悉,但我不想依赖于GAC中的这些程序集。

2 个答案:

答案 0 :(得分:2)

您可以向.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>

有很多细节,所以最好是阅读Redirecting Assembly Versions on MSDN以确定哪种方法最适合您的情况。

答案 1 :(得分:1)

您可以在app.config文件中设置版本策略。或者,您可以通过调用Assembly.LoadFrom()手动加载这些程序集,此时不会考虑程序集版本。