C# 在C代码中使用$Rev:$SVN关键字?

C# 在C代码中使用$Rev:$SVN关键字?,c#,svn,syntax,tortoisesvn,revision,C#,Svn,Syntax,Tortoisesvn,Revision,有人知道在C代码中使用file revision关键字的语法吗?我知道如何在SQL Server中使用它,但我似乎无法正确使用语法。我已将属性添加到要在其中显示版本的文件中。您的C文件应包含$LastChangedRevision:$才能添加SVN修订版。但是,您还需要为要在其中扩展该值的文件正确设置svn:keywords属性 例如,以下内容将生成一个包含修订的字符串 string revision = "$LastChangedRevision: $"; svn:keywords属性应在其

有人知道在C代码中使用file revision关键字的语法吗?我知道如何在SQL Server中使用它,但我似乎无法正确使用语法。我已将属性添加到要在其中显示版本的文件中。

您的C文件应包含$LastChangedRevision:$才能添加SVN修订版。但是,您还需要为要在其中扩展该值的文件正确设置svn:keywords属性

例如,以下内容将生成一个包含修订的字符串

string revision = "$LastChangedRevision: $";
svn:keywords属性应在其以空格分隔的值列表中包含LastChangedVision

您可以通过编辑TortoiseSVN配置使cs扩展自动执行此操作。要执行此操作,请转到OrtoiseSVN explorer菜单并选择Settings。。。。然后在“常规”选项卡上,单击Subversion配置文件旁边的“编辑”按钮:

向下滚动并在[auto props]部分添加一行,例如,您可能有更多或更少的关键字,还可以设置其他属性:

*.cs = svn:keywords=LastChangedDate LastChangedBy LastChangedRevision Id URL;

您可以调用SubWCRev.exe,让它将版本号写入预构建中的Resources.resx中,然后进行清理,这样您就不需要再处理其他脚本,svn也不会反复将Resources.resx视为已更改

使用SubWCRev.exe识别的占位符将字符串资源添加到resources.resx文件中,例如:

构建时间=$WCNOW$

CurrentSVNRevision=$WCREV$

HasLocalModifications=$WCMODS?检测到本地修改:$

添加以下预构建以备份Resources.resx,并让SubWCRev.exe使用所需的值替换占位符:

复制/Y$ProjectDir\Properties\Resources.resx$ProjectDir\Properties\Resources.resx.save

调用C:\Program Files\TortoiseSVN\bin\SubWCRev.exe$SolutionDir\$ProjectDirProperties\Resources.resx$ProjectDirProperties\Resources.resx

添加以下生成后还原资源。resx:

移动/Y$ProjectDir\Properties\Resources.resx.save$ProjectDir\Properties\Resources.resx

将生成后事件设置为始终运行,即使生成失败

在代码中需要的任何地方使用Resources.CurrentSVNRevision等


我看了很多解决方案,然后发现它比我发现的任何其他解决方案都要简单和健壮。希望它能帮助其他人。

谢谢杰夫!然而,我实际遇到的问题是访问代码中的属性。例如,将$Revision:$作为字符串输出的语法是什么?@badpanda:string Revision=$LastChangedRevision:$;签入文件并再次签出,将填写修订。何时调用其auto propse?如果我更改了[自动道具]部分,我应该如何获得更改的数据?@Martin:我相信自动道具只在首次添加时应用于文件。如果存储库中已经存在一个文件,那么您必须手动将道具添加到每个文件中。如何从LastChangedVision中仅获取数字?因为我需要将其添加到AssemblyInfo.cs-[assembly:AssemblyFileVersion1.0.0.0]