代码之家  ›  专栏  ›  技术社区  ›  ravenspoint

从一个位置更新的所有文件的Visual-Studio-2008版本信息

  •  1
  • ravenspoint  · 技术社区  · 15 年前

    当鼠标光标悬停在Windows资源管理器中的文件上时,将为Visual Studio在版本资源中生成的文件设置版本信息。我希望在一个地方为解决方案生成的所有文件设置版本,最好是在安装属性中更改版本时。有办法吗?

    这样做的动机是,如果一个文件的版本没有更新,那么安装程序将保留以前版本的文件,而不是用新文件替换它们。即使设置了“removePreviousVersions”属性,也会发生这种情况。为了保存在构建和安装的每个文件中更新版本这一单调且容易出错的任务,我从所有文件中删除了版本资源——这并不优雅。

    2 回复  |  直到 15 年前
        1
  •  1
  •   Community CDub    8 年前

    堆栈溢出主题中的第二个答案 How to programatically change a project's product version? 提供一个解决方案,用于在C++中从通用头文件中设置版本号。只需将包含硬编码版本号的头文件放在每个项目可以找到它的文件夹中。

    上面的答案还描述了增加版本号的方法。另一种C++版本递增的方法可以从微软的文章中获得 How to increment version information after each build in Visual C++

    或者,您可以使用源代码管理存储库修订号作为版本号的一部分。堆栈溢出文章 Creating a file with build number and branch name in SVN 为Tortoissesvn用户提供了一些了解。以下两篇文章更深入地探讨了这一点:

    Integrating the Subversion Revision into the Version Automatically with .NET (C# or VB)

    Integrating the Subversion Revision into the Version Automatically with Native C/C++

    (以上两个网页功能链接到 TortoiseHg用户)

    理论上,您可以使用一个包含新版本号的文本文件,然后运行一个预构建脚本,该脚本将:

    1. 在文本文件中增加版本号(可选 合并存储库修订号)
    2. 写出或修改通用版本文件:
      • C++(版本h)
      • C(globalassemblyinfo.cs)
      • Java(通过Ant属性文件,例如版本.属性)
      • 等。
        2
  •  0
  •   Ragoczy    15 年前

    要集中解决方案的版本控制,请执行以下操作:

    1. 从assemblyinfo.cs中提取版本信息;
    2. 创建一个新文件(globalassemblyinfo.cs)并将您的版本信息放入其中(使用*获取vs为每个构建创建一个新的版本号);
    3. 将globalassemblyinfo.cs作为链接引用:添加现有项,然后在文件选择中下拉“添加”按钮,选择“添加为链接”;
    4. 对解决方案中的每个项目重复;

    我在版本中使用这样的块:

    #如果调试

    [程序集:程序集版本(“1.8.0.0”)]

    否则

    [程序集:程序集版本(“1.8.*”)]

    第二节

    这可以防止VS在开发过程中重建每个程序集,但在构建一个版本时会给每个程序集一个新的版本号。