MSBuild Exec命令始终失败
我正试图从MSBuild(VS2015,来自MSBuild Exec命令始终失败,msbuild,Msbuild,我正试图从MSBuild(VS2015,来自.target文件)执行此简单命令,以生成当前git提交的日期: git show -s --format=%cd --date=format:%d.%m.%Y 因此,在MSBuild中,我尝试了: <Exec Command="git show -s --format=%25cd --date=format:%25d.%25m.%25Y" ConsoleToMSBuild="true"> <Output TaskParame
.target
文件)执行此简单命令,以生成当前git提交的日期:
git show -s --format=%cd --date=format:%d.%m.%Y
因此,在MSBuild中,我尝试了:
<Exec Command="git show -s --format=%25cd --date=format:%25d.%25m.%25Y" ConsoleToMSBuild="true">
<Output TaskParameter="ConsoleOutput" PropertyName="BuildDate" />
</Exec>
如果我将引号内的命令发布到控制台,它会像符咒一样工作并打印19.12.2016
我试过以下几件事:
- 也要转义
符号,=
。。。还是不行:
- 仅使用
->还会产生一个错误Command=“git show-s--format=%25ci”
,但在控制台中可以正常工作致命:无效--pretty format:ci
- 用引号括起来--format=%25ci“->相同错误
- 使用
调用,这将按预期工作并返回git版本(与控制台上相同)Command=“git--version”
我怀疑它在某种程度上不接受指定参数的
=
,但git不允许我将其作为单独的参数传递,例如用空格分隔。您希望%25
转义%
,因此您的命令变为
<Exec Command="git show -s --format=%25%25cd --date=format:%25%25d.%25%25m.%25%25Y" ConsoleToMSBuild="true">
<Output TaskParameter="ConsoleOutput" PropertyName="BuildDate" />
</Exec>
请参见此处,了解您希望
%25
转义%
,以便您的命令变为
<Exec Command="git show -s --format=%25%25cd --date=format:%25%25d.%25%25m.%25%25Y" ConsoleToMSBuild="true">
<Output TaskParameter="ConsoleOutput" PropertyName="BuildDate" />
</Exec>
另一个答案帮助了我,但我有一个稍微复杂一点的场景。以下是我自己的解决方案,并添加了一些解释:
这将执行以下命令:
git log -1 --oneline --pretty='%h %ad <%ae>' > bin/debug/git-info.txt
git日志-1--oneline--pretty='%h%ad'>bin/debug/git-info.txt
以下是我对为什么需要每次逃跑的理解:
是%25
符号的首字母%
然后将创建两个百分比符号,这是%25%25
是双引号的缩写“
是
字符的
这将执行以下命令:
git log -1 --oneline --pretty='%h %ad <%ae>' > bin/debug/git-info.txt
git日志-1--oneline--pretty='%h%ad'>bin/debug/git-info.txt
以下是我对为什么需要每次逃跑的理解:
是%25
符号的首字母%
然后将创建两个百分比符号,这是%25%25
是双引号的缩写“
是
字符的