3

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

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

4

2 回答 2

2

有几个地方可以向 .Net 框架表明,强类型库的特定版本应该优先于另一个版本。这些都是:

  • 出版商政策文件
  • 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 上的 Redirecting Assembly Versions来决定哪种方法最适合您的情况。

于 2008-09-11T00:32:11.997 回答
1

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

于 2008-09-10T16:14:37.513 回答