VS 2005/2008生成程序的自动版本号问题

一直以来版本号都是我自己手工写的,两个原因:一是版本方便,省得出现很多版本自己都乱,二是不知道怎么设置。研究了一下终于明白怎么设置了:

assemblyInfo.cs文件内容

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

// 有关程序集的常规信息通过下列属性集
// 控制。更改这些属性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("WindowsFormsApplication4")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Lenovo")]
[assembly: AssemblyProduct("WindowsFormsApplication4")]
[assembly: AssemblyCopyright("Copyright © Lenovo 2008")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

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

// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("e6cc7d53-524e-450a-a5f0-75d5f4711982")]

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

每次修改我都是把

[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

两个版本号都改,所以一直也没有出现过错误,但是按照它本身的说明使用自动版本号的话应该成:

[assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyFileVersion("1.0.0.0")]

但是这样程序中取回的版本号还是1.0.0.0,如果改成

[assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyFileVersion("1.0.*")]

则取回的版本号成了:1.0.*

问题出在哪?后经实现发现只要屏蔽AssemblyFileVersion就可以了。

完成后的

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

// 有关程序集的常规信息通过下列属性集
// 控制。更改这些属性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("WindowsFormsApplication4")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Lenovo")]
[assembly: AssemblyProduct("WindowsFormsApplication4")]
[assembly: AssemblyCopyright("Copyright © Lenovo 2008")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

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

// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("e6cc7d53-524e-450a-a5f0-75d5f4711982")]

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

这样再取就是自动版本号了。

估计M$的说明不是很清楚,上面只写着改成1.0.*,但是忘记说把后面的FileVersion给注释掉了。

按照这个格式出来的版本号,内部修订版本号的位置出现的是2000年1月1日到编译日期的天数,内部修订号是当天从0点到当前时间的刻度数。

你可能感兴趣的:(VS 2005/2008生成程序的自动版本号问题)