C SHARP 版本号管理【转】

c# 版本号管理

最近在找C#的版本号问题,对于程序集版本和文件版本的使用不理解,特记录如下 :

关于发布版本号管理 

标准版本号物理形式表示为用句点隔开的四段数字,如下面的代码示例所示。

<major version>.<minor version>.<build number>.<revision> 


实际使用中,我们一般只用到前面三段。即
<major version>.<minor version>.<build number>


而且会分外部版本号和内部版本号:
<Version>
    <InternalVer>2.2.2</InternalVer>
    <ExternalVer>1.1.0</ExternalVer>
</Version>


程序显示的应该是外部版本号。
程序编译前用当前的内部版本号更新 AssemblyVersion 属性的 build number 段,非程序文件(如资源等)在打包、备份、打标签时统一使用内部版本号。




每个Assebmly包含三个Version 
AssemblyFileVersion :存储在win32资源中, CLR不关心这个版本号, 
AssemblyInformationnalVersion :存储在win32资源中, CLR不关心这个版本号,此版本号用来表示包含 
Assembly的产品的版本 
AssemblyVersion: 存储在AssemblyDef manifest metadata table中,CLR会使用这个版本号 


工具的支持: 
CSC.exe和AL.exe在每次build时可以自动增加AssemblyVersion, 但要慎用.改变一个Assembly的 
AssemblyVersion会导致引用这个Assembly的其它Assembly无法工作. 


在VS会为每一个.net Porject生成 AssemblyInfo.cs 可在其中设置相关的信息. 
[assembly: AssemblyVersion(”1.0.0.0″)] 
[assembly: AssemblyFileVersion(”1.0.1.0″)] 
如果使用[assembly: AssemblyVersion(”1.0.*”)], 在每次程序修改后build或rebuild后, assembly的 
AssemblyVersion的Build Number和 ReversionNumber和会自动增加.ReversionNumber每次都变, 
Build Number随日期的变化而变化. 


有没有什么工具可以显式地设置一个solution中所有的project的AssemblyVersion? 


通过程序获得版本信息: 
//== Get File Version 
System.Diagnostics.FileVersionInfo.GetVersionInfo 


//==Get Assembly Version 
AssemblyName assName = Assembly.GetExecutingAssembly().GetName(); 
string version = assName.Version.ToString(); 


对于一个win32的exe或dll,在Explore中查看它的属性(Properties->Version)可以看到 
File Version 
Product Version


一个.net Assembly在Explore中查看它的属性(Properties->Version)可以看到 
Assebly Version (对应 AssemblyVersion) 
File Version (对应 AssemblyFileVersion) 
Product Version (对应 AssemblyInformationnalVersion, 如果不指定,则和AssemblyFileVersion对应)

最近在找C#的版本号问题,对于程序集版本和文件版本的使用不理解,特记录如下 :

关于发布版本号管理 

标准版本号物理形式表示为用句点隔开的四段数字,如下面的代码示例所示。

<major version>.<minor version>.<build number>.<revision> 


实际使用中,我们一般只用到前面三段。即
<major version>.<minor version>.<build number>


而且会分外部版本号和内部版本号:
<Version>
    <InternalVer>2.2.2</InternalVer>
    <ExternalVer>1.1.0</ExternalVer>
</Version>


程序显示的应该是外部版本号。
程序编译前用当前的内部版本号更新 AssemblyVersion 属性的 build number 段,非程序文件(如资源等)在打包、备份、打标签时统一使用内部版本号。




每个Assebmly包含三个Version 
AssemblyFileVersion :存储在win32资源中, CLR不关心这个版本号, 
AssemblyInformationnalVersion :存储在win32资源中, CLR不关心这个版本号,此版本号用来表示包含 
Assembly的产品的版本 
AssemblyVersion: 存储在AssemblyDef manifest metadata table中,CLR会使用这个版本号 


工具的支持: 
CSC.exe和AL.exe在每次build时可以自动增加AssemblyVersion, 但要慎用.改变一个Assembly的 
AssemblyVersion会导致引用这个Assembly的其它Assembly无法工作. 


在VS会为每一个.net Porject生成 AssemblyInfo.cs 可在其中设置相关的信息. 
[assembly: AssemblyVersion(”1.0.0.0″)] 
[assembly: AssemblyFileVersion(”1.0.1.0″)] 
如果使用[assembly: AssemblyVersion(”1.0.*”)], 在每次程序修改后build或rebuild后, assembly的 
AssemblyVersion的Build Number和 ReversionNumber和会自动增加.ReversionNumber每次都变, 
Build Number随日期的变化而变化. 


有没有什么工具可以显式地设置一个solution中所有的project的AssemblyVersion? 


通过程序获得版本信息: 
//== Get File Version 
System.Diagnostics.FileVersionInfo.GetVersionInfo 


//==Get Assembly Version 
AssemblyName assName = Assembly.GetExecutingAssembly().GetName(); 
string version = assName.Version.ToString(); 


对于一个win32的exe或dll,在Explore中查看它的属性(Properties->Version)可以看到 
File Version 
Product Version


一个.net Assembly在Explore中查看它的属性(Properties->Version)可以看到 
Assebly Version (对应 AssemblyVersion) 
File Version (对应 AssemblyFileVersion) 
Product Version (对应 AssemblyInformationnalVersion, 如果不指定,则和AssemblyFileVersion对应)

猜你喜欢

转载自www.cnblogs.com/yinhe-Helloworld/p/11625593.html