程序集 A 和 B 是私有部署和强命名的。程序集 A 包含对程序集 B 的引用。程序集 B 有两个版本:B1 和 B2。我希望能够为程序集 A 指示它可以绑定到 B1 或 B2——理想情况下,通过将此信息合并到程序集本身中。我有哪些选择?
我对版本控制策略及其应用于 GAC 的方式有些熟悉,但我不想依赖 GAC 中的这些程序集。
程序集 A 和 B 是私有部署和强命名的。程序集 A 包含对程序集 B 的引用。程序集 B 有两个版本:B1 和 B2。我希望能够为程序集 A 指示它可以绑定到 B1 或 B2——理想情况下,通过将此信息合并到程序集本身中。我有哪些选择?
我对版本控制策略及其应用于 GAC 的方式有些熟悉,但我不想依赖 GAC 中的这些程序集。
有几个地方可以向 .Net 框架表明,强类型库的特定版本应该优先于另一个版本。这些都是:
所有这些方法都使用“<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来决定哪种方法最适合您的情况。
您可以在 app.config 文件中设置版本策略。或者,您可以手动加载这些程序集,并在完成时调用Assembly.LoadFrom()
不考虑程序集版本。