1

当鼠标光标悬停在 Windows 资源管理器中的文件上时显示的版本信息是为 Visual Studio 在 VERSION 资源中构建的文件设置的。我想在一个地方为解决方案构建的所有文件设置版本,最好是在我更改安装属性中的版本时。有没有办法做到这一点?

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

4

2 回答 2

1

Stack Overflow 主题中的第二个答案如何以编程方式更改项目的产品版本?具有从 C++ 中的通用头文件设置版本号的解决方案。只需将包含硬编码版本号的头文件放在每个项目都可以找到的文件夹中。

上面的答案还描述了一种增加版本号的方法。Microsoft 的文章How to increment version information after each build in Visual C++提供了另一种 C++ 版本递增方法。

或者,您可以使用源代码控制存储库修订号作为版本号的一部分。堆栈溢出文章在 SVN 中创建具有内部版本号和分支名称的文件为 TortoiseSVN 用户提供了一些见解。以下两篇文章更深入地探讨了这一点:

使用 .NET(C# 或 VB)将 Subversion 修订版自动集成到版本中

使用 Native C/C++ 将 Subversion 修订版自动集成到版本中

(以上两个网页为 TortoiseHg 用户提供了类似程序的链接)

理论上,您可以拥有一个保存新版本号的文本文件,然后运行一个预构建脚本,该脚本将:

  1. 增加文本文件中的版本号(可选地包含存储库修订号)
  2. 写出或修改通用版本文件:
    • C++ (版本.h)
    • C# (GlobalAssemblyInfo.cs)
    • Java(通过 Ant 属性文件,例如 version.properties)
    • 等等
于 2012-03-01T20:55:16.063 回答
0

为解决方案集中版本控制:

  1. 从 AssemblyInfo.cs 中取出版本信息;
  2. 创建一个新文件(GlobalAssemblyInfo.cs)并将您的版本信息放入其中(使用 * 让 VS 为每个构建创建一个新的版本号);
  3. 参考 GlobalAssemblyInfo.cs 作为链接:添加 | 现有项目然后在文件选择中下拉添加按钮以选择添加为链接;
  4. 对解决方案中的每个项目重复;

我对版本使用这样的块:

#如果调试

[组装:组装版本(“1.8.0.0”)]

#别的

[程序集:AssemblyVersion("1.8.*")]

#万一

这可以防止 VS 在开发期间重新构建每个程序集,但在我构建版本时为每个程序集提供一个新的版本号。

于 2010-04-29T14:31:12.227 回答