我希望我的.exe文件可以访问包含我的svn版本的资源字符串。我可以手动输入,但我更希望有一种自动化的方式来在编译时嵌入这个版本信息。在Visual Studio 2008中是否有这样的能力?
我希望我的.exe文件可以访问包含我的svn版本的资源字符串。我可以手动输入,但我更希望有一种自动化的方式来在编译时嵌入这个版本信息。在Visual Studio 2008中是否有这样的能力?
我希望实现类似的可用性,但发现 $Rev$ 不够用,因为它只在文件的修订版本更改时进行更新(这意味着每次必须编辑并提交该文件:这不是我想要的)。相反,我想要的是基于存储库的修订版本号。
对于我现在正在开发的项目,我编写了一个 Perl 脚本,从我的工作副本的最高级目录中运行 svnversion -n
命令,并将最近的修订信息输出到一个 .h 文件中(实际上,我将其与保存在非版本控制文件中的修订进行比较,以便我不会在每次编译时覆盖当前修订信息,但是否选择这样做由您决定)。我的应用程序代码和资源文件都引用了这个 .h 文件(或者根据您的方法引用了多个文件)以获取所需的信息。
这个脚本在构建前作为预构建步骤运行,以确保一切都是最新的,并且适当的文件会在您的构建工具自动重新构建。
可以考虑使用随TortoiseSVN一起提供的命令行工具SubWCRev。您需要创建一个包含类似 $WCREV$ $WCDATE$ 的标记的模板文件,然后在构建前运行 SubWCRev 来生成实际的源文件,并将其交给编译器。
如果这样可以解决问题的话,您可以获取SVN以嵌入它。请参阅该页面上的$Rev$关键字。
我们使用的是antik的解决方案。注意不要使用环境变量,.h文件确保您可以有一个依赖项,这将导致任何需要它的文件在svn版本号更改时重新编译。
svnversion
输出的值在最终字符集中包含“M”时。这将允许您在提交后重新构建项目而不更改版本号。(有关其输出格式的说明,请参见svnversion
文档。) - user473305