我对msbuild和git有一个奇怪的问题,我在msbuild中有一个目标,我在其中创建一个包含git提交的文件,但是当msbuild运行时目标无效... 我从任务中拿出一个片段来展示我在做什么:
<GitLogFormat>%25H:%25an:%25cd:%25B</GitLogFormat>
<GitLogPath>gitlog.xml</GitLogPath>
<Exec
Command='"$(GitRunner)" log --full-history --pretty=format:"$(GitLogFormat)" > $(GitLogPath)'
WorkingDirectory="$(GlobalRootPath)"
</Exec>
这将输出命令:
"C:\Program Files (x86)\Git\bin\git.exe" log --full-history --pretty=format:"%H:%an:%cd:%B" > gitlog.xml
如果我从命令行(而不是msbuild)执行此操作,那么gitlog文件的输出将如下所示:
35b833f0133cee6bd749be6cc4dbb40c15ab1ff2:rewso:Sun Sep 14 12:16:51 2014 +0200:Main release_ContractManagement was commited local v: 0.17.2
0ca16d0c60768879cb876c1da8e9fb2e76ef6074:rewso:Sun Sep 14 11:29:16 2014 +0200:Main release_ContractManagement was commited local v: 0.16.2
fe14af5547f458dab069aa862c304e03136f0a94:rewso:Sun Sep 14 01:08:15 2014 +0200:Main release_ContractManagement was commited local v: 0.15.2
但如果我从msbuild执行此操作,gitlog文件的输出将为:
an:B
an:B
an:B
当我使用msbuild时,如何获得相同的输出?
答案 0 :(得分:3)
%字符需要转义两次。有一次同样的问题,我不记得为什么它需要两次;它可能与Exec或底层cmd有关,将%视为用于环境变量的字符。
无论如何,这应该这样做:
<PropertyGroup>
<GitLogFormat>%25%25H:%25%25an:%25%25cd:%25%25B</GitLogFormat>
</PropertyGroup>