.NET的AssemblyVersionAttribute类如何定义版本号?

星降
发布: 2025-09-20 09:04:01
原创
313人浏览过
程序集版本号格式为major.minor.build.revision,用于标识程序集的主版本、次版本、生成号和修订号,CLR通过该版本号进行程序集加载与绑定,其中主版本用于重大不兼容更新,次版本用于兼容的功能新增,生成号和修订号分别表示编译次数和小修。

.net的assemblyversionattribute类如何定义版本号?

.NET的AssemblyVersionAttribute类通过一个字符串来定义程序集的版本号,这个字符串遵循“主版本号.次版本号.生成号.修订号”的格式。理解这个格式,对于版本控制和部署至关重要。

AssemblyVersionAttribute允许你为程序集指定一个版本号。这个版本号在程序集的元数据中存储,并被CLR(公共语言运行时)用来在运行时加载和绑定程序集。

程序集版本号的格式和作用是什么?

版本号的格式是

major.minor.build.revision
登录后复制
,每个部分都有其特定的含义:

  • Major(主版本号): 表示程序集的主要版本。如果程序集发生了重大更改,或者与之前的版本不兼容,那么应该增加主版本号。
  • Minor(次版本号): 表示程序集的次要版本。如果程序集添加了新功能,但是与之前的版本兼容,那么应该增加次版本号。
  • Build(生成号): 表示程序集的生成号。每次重新编译程序集时,可以增加生成号。通常,生成号用于表示程序集的内部版本。
  • Revision(修订号): 表示程序集的修订号。如果程序集修复了Bug,或者进行了小的更改,那么应该增加修订号。

如何使用AssemblyVersionAttribute?

你可以在

AssemblyInfo.cs
登录后复制
文件中使用
AssemblyVersionAttribute
登录后复制
来指定程序集的版本号。例如:

using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

// 有关程序集的常规信息通过以下项进行控制
// 特性集。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("MyAssembly")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("MyCompany")]
[assembly: AssemblyProduct("MyAssembly")]
[assembly: AssemblyCopyright("Copyright © MyCompany 2023")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

//将 ComVisible 设置为 false 将使此程序集中的类型
//对 COM 组件不可见。  如果需要从 COM 访问此程序集中的类型,
//请将该类型的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]

// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")]

// 程序集的版本信息由下列四个值组成:
//
//      主版本
//      次版本
//      生成号
//      修订版本
//
// 可以指定所有值,也可以使用“生成号”和“修订号”的默认值,
// 方法是按如下所示使用“*”:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
登录后复制

在这个例子中,程序集的版本号被设置为

1.0.0.0
登录后复制
。注意
AssemblyFileVersion
登录后复制
通常也需要同步更新,但它更多是文件版本信息,与程序集加载关系不大。

自动生成Build和Revision号

你可以使用

*
登录后复制
来自动生成
Build
登录后复制
Revision
登录后复制
号。例如:

[assembly: AssemblyVersion("1.0.*")]
登录后复制

在这种情况下,

Build
登录后复制
号将自动设置为自2000年1月1日起的天数,
Revision
登录后复制
号将自动设置为自午夜起的秒数除以2。这对于自动构建过程非常有用。当然,这可能会导致一些不可预测性,在生产环境中使用时需要谨慎。

AssemblyVersion和AssemblyFileVersion的区别是什么?

这是一个常见的混淆点。

AssemblyVersion
登录后复制
是CLR用于加载和绑定程序集的版本号。
AssemblyFileVersion
登录后复制
是文件版本号,它用于显示在文件属性对话框中。虽然它们通常设置为相同的值,但它们实际上是独立的。
AssemblyFileVersion
登录后复制
可以更频繁地更新,而
AssemblyVersion
登录后复制
应该只在程序集发生重大更改时才更新,以避免破坏现有的绑定。

稿定AI文案
稿定AI文案

小红书笔记、公众号、周报总结、视频脚本等智能文案生成平台

稿定AI文案45
查看详情 稿定AI文案

版本冲突和程序集绑定

当多个版本的程序集存在时,可能会发生版本冲突。CLR使用程序集绑定来解决这些冲突。程序集绑定是CLR用来确定加载哪个版本的程序集的过程。可以通过配置文件

app.config
登录后复制
web.config
登录后复制
)来配置程序集绑定。例如,你可以指定CLR加载特定版本的程序集,或者将旧版本的程序集重定向到新版本。

强命名程序集

为了避免程序集名称冲突,你可以使用强命名程序集。强命名程序集使用私钥进行签名,并包含公钥令牌。这使得CLR可以唯一地标识程序集,并防止恶意程序集伪装成其他程序集。要创建强命名程序集,你需要使用

sn.exe
登录后复制
工具生成一个密钥对文件,然后在Visual Studio的项目属性中指定该文件。

版本控制策略

选择合适的版本控制策略非常重要。一种常见的策略是使用语义化版本控制(SemVer)。SemVer是一种版本控制规范,它使用

major.minor.patch
登录后复制
的格式来表示版本号,并定义了如何增加每个部分。例如,如果修复了Bug,那么应该增加
patch
登录后复制
号;如果添加了新功能,但是与之前的版本兼容,那么应该增加
minor
登录后复制
号;如果程序集发生了重大更改,或者与之前的版本不兼容,那么应该增加
major
登录后复制
号。

版本控制工具

使用版本控制工具(如Git)可以帮助你管理程序集的版本。版本控制工具可以跟踪代码的更改,并允许你回滚到之前的版本。这对于修复Bug和管理代码库非常有用。

总结

AssemblyVersionAttribute
登录后复制
是.NET中用于定义程序集版本号的关键属性。理解版本号的格式和作用,以及如何使用
AssemblyVersionAttribute
登录后复制
,对于版本控制和部署至关重要。同时,了解
AssemblyVersion
登录后复制
AssemblyFileVersion
登录后复制
的区别,以及程序集绑定和强命名程序集的概念,可以帮助你更好地管理程序集,并避免版本冲突。使用版本控制工具和选择合适的版本控制策略,可以进一步提高版本管理的效率和质量。

以上就是.NET的AssemblyVersionAttribute类如何定义版本号?的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号