Lyndon Gingerich
I wish to add a property with the date of the current Git commit to the assembly info.
From my .csproj:
```csproj
<Exec Command="git -C "$(ProjectDir)." log -1 --pretty=format:%ad"
ConsoleToMSBuild="true"
Condition="'$(GitCommitDate)' == ''">
<Output TaskParameter="ConsoleOutput" PropertyName="GitCommitDate" />
</Exec>
```
Build output interpretation: `git -C "<project directory>\." log -1 --pretty=format:-`
Output: `-`
Using raw format:
```csproj
<Exec Command="git -C "$(ProjectDir)." log -1 --pretty=format:%aD"
ConsoleToMSBuild="true"
Condition="'$(GitCommitDate)' == ''">
<Output TaskParameter="ConsoleOutput" PropertyName="GitCommitDate" />
</Exec>
```
Build output interpretation: `git -C "<project directory>\." log -1 --pretty=format:-`
Output: `-`
Doubling `%` characters to escape them:
```csproj
<Exec Command="git -C "$(ProjectDir)." log -1 --pretty=format:%%aD"
ConsoleToMSBuild="true"
Condition="'$(GitCommitDate)' == ''">
<Output TaskParameter="ConsoleOutput" PropertyName="GitCommitDate" />
</Exec>
```
Build output interpretation: `git -C "<project directory>\." log -1 --pretty=format:%-`
Output: `-`
This attempt worked, but it gets different details from those I want:
```csproj
<Exec Command="git -C "$(ProjectDir)." log -1 --pretty=format:"%%H %%cI""
ConsoleToMSBuild="true"
Condition="'$(GitCommitDate)' == ''">
<Output TaskParameter="ConsoleOutput" PropertyName="GitCommitDate" />
</Exec>
```
Build output interpretation: `git -C "<project directory>\." log -1 --pretty=format:"%%H %%cI"`
Output: `2594b984b59b061dd714ed6a88fbee2907b30a05 2024-02-14T12:33:49-06:00`
So I tried adding quotes to my original attempt:
```csproj
<Exec Command="git -C "$(ProjectDir)." log -1 --pretty=format:"%%aD""
ConsoleToMSBuild="true"
Condition="'$(GitCommitDate)' == ''">
<Output TaskParameter="ConsoleOutput" PropertyName="GitCommitDate" />
</Exec>
```
Build output interpretation: `git -C "<project directory>\ManagementConsole\." log -1 --pretty=format:"%"`
Output: `-`
What am I doing wrong?
What details am I missing that would help solve the question?
(I know that `git show` would be easier, but it failed the build with an exit code 128, which I figured would be more difficult to solve without further details.)
The `-` characters in the output and at the end of "build output interpretation" is added manually because I could not copy and paste it from my build output. I do not know why, but I thought that might be a clue.
Top Answer
Lyndon Gingerich
Right, % is "%25" in msbuildish. https://stackoverflow.com/questions/41227419/msbuild-exec-command-always-fails https://software.codidact.com/posts/290818/290831#answer-290831