惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

腾讯CDC
Microsoft Azure Blog
Microsoft Azure Blog
L
LangChain Blog
Y
Y Combinator Blog
Microsoft Security Blog
Microsoft Security Blog
宝玉的分享
宝玉的分享
B
Blog RSS Feed
MongoDB | Blog
MongoDB | Blog
Jina AI
Jina AI
D
Docker
B
Blog
Engineering at Meta
Engineering at Meta
Last Week in AI
Last Week in AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
I
InfoQ
G
Google Developers Blog
博客园 - Franky
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
The GitHub Blog
The GitHub Blog
T
The Blog of Author Tim Ferriss
大猫的无限游戏
大猫的无限游戏
阮一峰的网络日志
阮一峰的网络日志
U
Unit 42

博客园 - 误会馋

net C# 如何理解和实现 Dispose 方法 日志模块 Nginx 安装过程 PostgreSQL 数据库权限、角色总结 C#中的 Awaiter C#中的协变、逆变 C#中 IAsyncEnumerable 与 IAsyncEnumerator 的使用 Vue 中 vuex 的使用 Vue 中 vue-router 的使用 前后端登录时密码的加密 Vue 中 axios 的使用和跨域问题的解决 发布 ASP.NET Core WebAPI 至 IIS 关于 Workstation Pro 的基础知识 Docker 部署 gitlab 服务器迁移 实现持久化 C# 中 == 和 .Equals() 之间的区别 实现克隆 关于扩展服务 启用扩展
C# 版本控制
误会馋 · 2025-08-15 · via 博客园 - 误会馋

C# 版本控制

一、后向兼容

名称 说明 简述
二进制兼容 在没有重新编译的情况下,如果依赖于先前版本的应用程序适用于新版本,则新版本的库是二进制兼容的。 直接替换为新版本的dll而不影响程序启动、运行的。
源兼容 如果重新编译时,依赖于先前版本的代码适用于新版本,则新版本的库与先前版本是源兼容的。 需重新编译但无需改源代码的。

二、语义化版本控制

语义版本控制(简称 SemVer)是应用于库版本的命名约定,用于表示特定里程碑事件。 理想情况下,提供给库的版本信息应帮助开发人员确定版本是否与使用相同库的早期版本的项目兼容。

即开发人员之间的约定:通过版本号,可判断一个库的后向兼容性。

SemVer 的最基本方法是 3 组件格式 MAJOR.MINOR.PATCH,其中:

  • 进行不兼容的 API 更改时,MAJOR 将会增加
    • 删除公共方法或属性
    • 更改方法签名
      例如:原库有方法A,其参数1个,但新版本该方法增加了1个参数。
    • 以打破预期的方式更改现有方法的行为
      例如:原库有方法A,其捕获并处理了某异常,但新版本该方法不再处理该异常,而是直接throw此异常。
  • 以后向兼容方式添加功能时,MINOR 将会增加
    • 添加新的公共方法或属性
    • 添加新的重载
    • 向现有方法添加可选参数
  • 进行后向兼容 bug 修复时,PATCH 将会增加
    • 修复现有方法实现中的 bug
    • 不会更改 API 的性能改进

三、程序集绑定重定向

可使用 app.config 文件更新应用使用的库版本。通过添加所谓的绑定重定向,可在无需重新编译应用的情况下使用新的库版本。

<dependentAssembly>
    <assemblyIdentity name="ReferencedLibrary" publicKeyToken="32ab4ba45e0a69a1" culture="en-us" />
    <bindingRedirect oldVersion="1.0.0" newVersion="1.0.1" />
</dependentAssembly>

Note:仅当 ReferencedLibrary 的新版本与应用二进制兼容时,此方法有效。

更新后的程序将使用新版本的库。