【问题标题】:Write Git info strings to exe file C#将 Git 信息字符串写入 exe 文件 C#
【发布时间】:2013-03-26 23:31:53
【问题描述】:

我需要写git信息:提交名称、标签、分支等 到二进制 (exe) 文件。

需要运行字符串 * | grep git,在该文件上简单地查看有关它的最新 git 信息。 我知道运行此命令(不带 grep)时会显示 AssemblyInfo,但我面临两个可能的问题:

  1. 我不确定是否可以从代码写入 AssemblyInfo,运行“git log”命令,然后获取其输出并写入 AssemblyInfo。

  2. 如果我想使用命令 'git log',那么它无法在 Windows 上运行,但我的应用程序可能会构建在 Windows 上而不是 unix 环境上。

也许您知道另一种方法?

【问题讨论】:

  • 您希望这在何时发生 - 在构建或提交时?
  • 我希望它发生在构建中
  • 我发现 AssemblyInfo 以“字符串”格式写入 exe 文件的末尾,因此“字符串 *”命令会显示其中的内容。这是简单地添加到此 AssemblyInfo 'git log' 输出的完美方式,但我无法在 Windows 机器上运行 'git log'。
  • 你的构建环境是什么 - msbuild?
  • 实际上,mono 和 msbuild,我需要它同时在两者上工作。

标签: c# git logging msbuild mono


【解决方案1】:

这通常在您的构建脚本中完成,填充您的 AssemblyInfo 的模板版本(看看 mustache,一种模板语言)。

此构建步骤执行以下操作:

然后您的软件构建将照常继续。

【讨论】:

  • 好吧,我并没有真正理解你的意思'看看胡子'。但是当我尝试在 Windows 机器上构建我的应用程序时遇到了问题,因为我无法运行“git”命令,因为它们不是内置在 cmd 中的。
  • @user1243496:只需将 git.exe 的路径添加到您的 PATH 环境变量即可。
  • 听起来不错,但我需要更通用的方法,例如如果我想在 PATH 环境变量中没有 git.exe 的机器上构建它。另一种方法是读取 .git 文件夹中的文件,但我觉得不切实际..
  • 恕我直言,您希望在 PATH 中没有 git 的机器上进行构建,从而增加了太多约束。这是可能的,但为什么呢?没有 git 很难获得这些信息,而且 git 可以在几分钟内安装。如果你坚持你可以在你的代码中包含一个可移植的 git,但我觉得它不合适。
  • 感谢您的意见,非常感谢。好吧,我会重新考虑那部分。稍后将尝试您的答案,这似乎是完美的解决方案。
【解决方案2】:

有一个用于 Git windows 实现的 .net 包装器。一些高调的projects 使用这个实现。 https://github.com/libgit2/libgit2sharp, http://libgit2.github.com/

【讨论】:

    猜你喜欢
    • 2011-10-19
    • 1970-01-01
    • 2011-10-24
    • 1970-01-01
    • 1970-01-01
    • 2019-09-04
    • 2021-03-11
    • 2013-05-03
    相关资源
    最近更新 更多