【问题标题】:How to execute git commands in csproj script?如何在 csproj 脚本中执行 git 命令?
【发布时间】:2020-09-11 08:20:03
【问题描述】:

我必须使用 git 命令来获取提交哈希。我找到了几种方法,但似乎不起作用。如果我使用 powershell 脚本,我可以使用$env:Path += ";C:\Program Files (x86)\Git\bin" 导入 git.exe,这会容易得多。事实是我不想使用外部脚本(例如 powershell 脚本)或导入任何东西。有没有办法只使用 msbuild 来做到这一点?

我尝试过使用:

<Exec Command="git describe --long --always" ConsoleToMSBuild="true" />

错误 MSB3073:命令“git describe --long --always”以代码 9009 退出。

<Exec Command="$env:Path += ';C:\Program Files (x86)\Git\bin'; git describe --long --always" ConsoleToMSBuild="true" />

错误 MSB3073:命令 "$env:Path += ';C:\Program Files (x86)\Git\bin'" 退出,代码为 123

编辑

我不知道为什么 powershell 上有问题:s

更新

现在我正在使用以下行:

<Exec WorkingDirectory="$(MSBuildProjectDirectory)" Command="&amp; 'C:\Program Files (x86)\Git\bin\git.exe' describe --long --always" ConsoleToMSBuild="true" />

引发错误: 错误 MSB3073:命令 "& '(...)' describe --long --always" 以代码 255 退出。

【问题讨论】:

  • 您是否尝试过使用 git exe 的完整路径 (Command="C:\Program Files (x86)\Git\bin\git describe --long --always" ?
  • 它抛出 error MSB3073: The command "C:\Program Files (x86)\Git\bin\git describe --long --always" exited with code 9009 (我也试过 git .exe 完整路径)
  • 如果您在 msbuild 之外运行这些命令,它们是否有效? 9009 错误级别表示未找到命令/文件。 123 表示有一个未指定的错误 - 可能是解析或类似的东西。
  • 是的,我很确定它们可以工作。实际上,为了进行测试,我只是复制了错误(打印了我要执行的行),然后将其粘贴到 powershell 中,它就可以工作了。我在 google 中发现,当您从完整路径执行 .exe 时,您应该在开始时使用 '&',然后整行将是:"& 'C:\Program Files (x86)\Git\bin\ git.exe' 描述 --long --always"。现在它打印 exited with code 255。我不知道这意味着什么,但我很确定它与工作目录有关(如果您尝试在本地存储库之外运行该代码,则会引发错误)。
  • git describe 命令应该总是成功并在标准输出上返回一些东西。因此,问题可能出在其他地方。我会尝试单独运行它,但尽可能接近你在 csproj 中的内容。我还会问自己一个非常重要的问题:我真的需要这样做吗?从您所展示的内容来看,没有使用输出 - 那么投入时间和精力让它工作有什么意义?

标签: git powershell msbuild csproj


【解决方案1】:

经过多次尝试,我做到了:

<Exec Command="powershell.exe &amp; &quot;C:\Program Files (x86)\Git\bin\git.exe&quot; describe --long --always" ConsoleToMSBuild="true">
    <Output TaskParameter="ConsoleOutput" ItemName="Version" />
</Exec>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-20
    • 2021-02-12
    • 2020-12-08
    • 2017-02-14
    • 1970-01-01
    相关资源
    最近更新 更多