在Windows应用中在编译时嵌入SVN修订版号
时间:2020-03-06 14:54:09 来源:igfitidea点击:
我希望我的.exe可以使用svn版本访问资源字符串。我可以手动输入,但是我更喜欢在编译时自动嵌入的方式。 Visual Studio 2008中有这样的功能吗?
解决方案
如果可以解决问题,则可以让SVN代为嵌入。请参阅该页面上的$ Rev $关键字。
在这里看看svn关键字替换。我在这里通过Google找到了另一个SO问题!
我想要类似的可用性,发现$ Rev $不够用,因为只有在文件的修订版本更改时,它才针对文件进行更新(这意味着必须对其进行编辑和提交很长时间:不是我想做的事情。) ,我想要一些基于存储库的修订版号的东西。
对于我现在正在从事的项目,我编写了一个Perl脚本,该脚本从工作副本的最顶层目录运行svnversion -n
,并将最新的修订信息输出到.h文件(实际上,我将其与保存在我的工作副本中的非版本文件中的版本,这样我就不会在每次编译时都覆盖当前的修订信息,但是我们是否选择这样做取决于我们自己。)此.h文件(或者多个文件,如果有的话)必要时(取决于方法)在我的应用程序代码和资源文件中都被引用,以获取所需的信息。
该脚本作为预构建步骤运行,因此在构建开始之前,所有内容都是最新的,并且构建工具会自动重新构建适当的文件。
antik的解决方案是我们使用的解决方案。小心使用环境变量,.h文件可确保我们具有依赖项,当svn修订号更改时,该依赖项将导致需要该文件的所有文件重新编译。
如何使用SubWCRev与TortoiseSVN一起提供的命令行工具。我们创建了一个带有$ WCREV $ $ WCDATE $等令牌的模板文件。然后执行一个预构建步骤,在模板文件上运行SubWCRev以创建实际的源文件,该文件被馈送到编译器。