none
关于VB2008编译的程序的版本号 RRS feed

  • 问题

  • 在VB6的时候,每次编译程序,可以设定版本号自动累加。但是在VB2008中,似乎只有ClickOne的发布才会自动累加版本号,但是如果我使用了VB的安装项目来做安装程序,重新生成工程组的时候,并不会更新版本号。
    已知在程序集中My project文件夹下有AssemblyInfo.vb文件,可以设置版本号,这个可以做成动态吗?

    AssemblyInfo.vb文件如何编程呢?为什么所有代码都是添加了“<>”的呢?似乎和普通的VB代码语法不太一样。
    请高手指点一下,谢谢:)

    附AssemblyInfo.vb文件的内容:
    Imports System.Resources
    
    Imports System
    Imports System.Reflection
    Imports System.Runtime.InteropServices
    
    ' 有关程序集的常规信息通过下列属性集
    ' 控制。更改这些属性值可修改
    ' 与程序集关联的信息。
    
    ' 查看程序集属性的值
    
    <Assembly: AssemblyTitle("某程序")> 
    <Assembly: AssemblyDescription("某程序说明")> 
    <Assembly: AssemblyCompany("公司名")> 
    <Assembly: AssemblyProduct("产品名称")> 
    <Assembly: AssemblyCopyright("版权信息")> 
    <Assembly: AssemblyTrademark("商标")> 
    
    <Assembly: ComVisible(False)> 
    
    '如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
    <Assembly: Guid("DDDAD168-33A7-4B23-ADDC-5879493A9FE0")> 
    
    ' 程序集的版本信息由下面四个值组成:
    '
    '      主版本
    '      次版本
    '      内部版本号
    '      修订号
    '
    ' 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值,
    ' 方法是按如下所示使用“*”:
    ' <Assembly: AssemblyVersion("1.0.*")> 
    
    <Assembly: AssemblyVersion("1.2.0.00")> 
    <Assembly: AssemblyFileVersion("1.2.0.00")> 
    
    <Assembly: NeutralResourcesLanguageAttribute("zh-CHS")> 
    
    

    编程是永无止境的,向大家学习
    2009年10月11日 4:08

答案

  • 研究了一下MSDN,貌似只能改为

    <Assembly: AssemblyVersion("1.2.*")>
    <Assembly: AssemblyFileVersion("1.2.*")>

    或者
    <Assembly: AssemblyVersion("1.2.5.*")>
    <Assembly: AssemblyFileVersion("1.2.5.*")>

    version 字符串的格式是:major. minor. build. revision.
    在指定版本时,至少必须指定 major。如果指定 major 和 minor,则可以为 build 指定星号 (*)。
    这将使 build 等于自当地时间 2000 年 1 月 1 日以来的天数,使 revision 等于自当地时间午夜以来的秒数(被 2 除)。
    如果指定 major、minor 和 build,则可以为 revision 指定星号。这将使 revision 等于自当地时间午夜以来的秒数除以 2。


    虽然不符合预期的效果,但是也凑合。若是能允许有更灵活的定制就好了。
    编程是永无止境的,向大家学习
    2009年10月11日 7:06

全部回复

  • 你好!
         VB.NET中的版本号也是可以随着你重新生成程序而递增的!
    周雪峰
    2009年10月11日 4:19
    版主
  • 你好!
         VB.NET中的版本号也是可以随着你重新生成程序而递增的!
    周雪峰

    你好,周雪峰:)

    但是每次启动程序,看到My.Application.Info.Version的结果都是一样的。
    具体应该怎么做?是不是我该去掉这两行注释呢?
    <Assembly: AssemblyVersion("1.2.0.00")>
    <Assembly: AssemblyFileVersion("1.2.0.00")>

    Thanks
    编程是永无止境的,向大家学习
    2009年10月11日 4:47
  • 研究了一下MSDN,貌似只能改为

    <Assembly: AssemblyVersion("1.2.*")>
    <Assembly: AssemblyFileVersion("1.2.*")>

    或者
    <Assembly: AssemblyVersion("1.2.5.*")>
    <Assembly: AssemblyFileVersion("1.2.5.*")>

    version 字符串的格式是:major. minor. build. revision.
    在指定版本时,至少必须指定 major。如果指定 major 和 minor,则可以为 build 指定星号 (*)。
    这将使 build 等于自当地时间 2000 年 1 月 1 日以来的天数,使 revision 等于自当地时间午夜以来的秒数(被 2 除)。
    如果指定 major、minor 和 build,则可以为 revision 指定星号。这将使 revision 等于自当地时间午夜以来的秒数除以 2。


    虽然不符合预期的效果,但是也凑合。若是能允许有更灵活的定制就好了。
    编程是永无止境的,向大家学习
    2009年10月11日 7:06
  • 您好,我来回答您第二个问题吧。
    "<>"表示特性,为了提供可扩展的元数据。通常由CLR、IDE或我们自己来写消费的代码。
    通过反射来读取,可以参考相关的特性主题。
    当前本问题提到的特性将会被编译器识别并消费。
    2009年10月11日 9:28
  • 您好,我来回答您第二个问题吧。
    "<>"表示特性,为了提供可扩展的元数据。通常由CLR、IDE或我们自己来写消费的代码。
    通过反射来读取,可以参考相关的特性主题。
    当前本问题提到的特性将会被编译器识别并消费。

    消费?是运行、执行的意思吗?
    有点费解,不过还是谢谢你:)
    编程是永无止境的,向大家学习
    2009年10月18日 1:11