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

标签 .net versioning

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

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

最佳答案

您可以在多个位置向 .Net Framework 指示强类型库的特定版本应该优先于另一个版本。它们是:

  • 发布商政策文件
  • machine.config 文件
  • 应用程序配置文件

所有这些方法都利用了 "<bindingRedirect>"可以指示 .Net Framework 将程序集的一个版本或一系列版本绑定(bind)到特定版本的元素。

下面是一个简短的标记示例,用于将程序集的所有版本绑定(bind)到 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决定哪种方法最适合您的情况。

关于.net - 我如何指示依赖程序集的多个版本都可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54546/

相关文章:

.net - XmlSerializer 和 IEnumerable : Serialization possible w/o parameterless constructor: Bug?

apache-flex - 单独使用 actionScript 在 flex 中获取和设置应​​用程序的版本号

.net - 无法构建引用具有 2 位版本号的 .net 程序集的 VB6 项目

c# - 第一次打开应用程序时应用程序变慢

.net - 存储库是否应该实现 IQueryable<T>?

c# - 从 SQL 表记录创建 .DBF 文件

c# - 如何在 C# 应用程序中集成 d3.js 图表?

Workflow Foundation 以及与长时间运行实例的向后兼容性

dependencies - 如何编写一个 pip 要求文件,使其不安装测试版?

c# - 如何在 Unix 系统上验证 Windows VC++ DLL