Сделайте MSBuild Exec Command с кросс-платформенной работой git log - PullRequest
0 голосов
/ 25 января 2019

Я хочу сделать это в моем проекте ASP.NET Core 2.2:

git log -1 --format="Git commit %h committed on %cd by %cn" --date=iso

Но затем в качестве шага предварительной сборки я включил его в csproj так:

<Target Name="PreBuild" BeforeTargets="PreBuildEvent">
  <Exec Command="git log -1 --format=&quot;Git commit %25%25h committed on %25%25cd by %25%25cn&quot; --date=iso &gt; &quot;$(ProjectDir)/version.txt&quot;" />
</Target>

Это работает в Windows (если я правильно понимаю, %25 - это процент в терминах MSBuild, а двойной процент - это экранирование командной строки, поэтому мы имеем %25%25). Это дает мне такой вид version.txt:

Git commit abcdef12345 committed on 2019-01-25 14:48:20 +0100 by Jeroen Heijmans

Но если я выполню вышеупомянутое с dotnet build в Ubuntu 18.04, тогда я получу это в моем version.txt:

Git commit %h committed on %cd by %cn

Как я могу реструктурировать свой элемент Exec таким образом, чтобы он работал как в Windows (Visual Studio, Rider или dotnet CLI), так и в Linux (Rider или dotnet CLI)?

...