一直以来版本号都是我自己手工写的,两个原因:一是版本方便,省得出现很多版本自己都乱,二是不知道怎么设置。研究了一下终于明白怎么设置了:
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点到当前时间的刻度数。