【问题标题】:Using $Rev:$ SVN keyword in C# code?在 C# 代码中使用 $Rev:$ SVN 关键字?
【发布时间】:2010-07-27 16:35:20
【问题描述】:

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

【问题讨论】:

    标签: c# svn syntax tortoisesvn revision


    【解决方案1】:

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

    例如,以下将产生一个包含修订的字符串。

    string revision = "$LastChangedRevision: $";
    

    svn:keywords 属性应在其以空格分隔的值列表中包含LastChangedRevision

    您可以通过编辑 TortoiseSVN 配置为 cs 扩展自动执行此操作。为此,请转到 TortoiseSVN 资源管理器菜单并选择 Settings...。然后在General 选项卡上,单击Subversion configuration file: 旁边的Edit 按钮。

    向下滚动并在[auto-props] 部分中添加这样一行(只是一个示例,您可能有更多或更少的关键字,您也可以设置其他属性):

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

    【讨论】:

    • 谢谢杰夫!但是,我实际上遇到的问题是在我的代码中访问该属性。例如,将 $Revision: $ 作为字符串输出的语法是什么?
    • @badpanda: string revision = "$LastChangedRevision: $";签入文件并再次签出,将填写一个修订版。
    • 它的自动道具何时调用?如果我更改了 [auto-props] 部分,我应该如何获取更改的数据?
    • @Martin:我相信自动道具仅在首次添加时应用于文件。如果存储库中已存在文件,则必须手动将道具添加到每个文件。
    • 我怎样才能从 LastChangedRevision 中只获取数字?因为我需要将它添加到 AssemblyInfo.cs - [assembly: AssemblyFileVersion("1.0.0.0")]
    【解决方案2】:

    您可以调用 SubWCRev.exe 并让它在您的预构建中将版本号写入您的 Resources.resx 中,然后进行清理,这样您就不需要弄乱其他脚本,而 svn 可以不会重复看到 Resources.resx 已更改。

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

      构建时间 = $WCNOW$

      CurrentSVNRevision = $WCREV$

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

    2. 添加以下预构建(以备份您的 Resources.resx 并让 SubWCRev.exe 将占位符替换为所需的值):

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

      调用 "C:\Program Files\TortoiseSVN\bin\SubWCRev.exe" "$(SolutionDir)\" "$(ProjectDir)Properties\Resources.resx" "$(ProjectDir)Properties\Resources.resx"

    3. 添加以下构建后以恢复您的 Resources.resx:

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

    4. 将构建后事件设置为始终运行(即使构建失败)

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

    我查看了很多解决方案,然后发现它比我发现的任何其他解决方案都更简单、更强大。希望它可以帮助别人。

    【讨论】:

      猜你喜欢
      • 2011-10-28
      • 1970-01-01
      • 2014-03-30
      • 2015-07-22
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 2022-01-05
      相关资源
      最近更新 更多