Repository navigation
Expand file tree
/
Copy pathDirectory.Build.targets
More file actions
56 lines (52 loc) · 3.53 KB
/
Copy pathDirectory.Build.targets
File metadata and controls
56 lines (52 loc) · 3.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<Project>
<!--
Версионирование из git-тегов и build/NEXT_VERSION для всех проектов.
Version = тег на HEAD (при нескольких — с максимальным приоритетом по
SemVer: 1.2.3 > 1.2.3-rc5 > 1.2.3-beta3 > 1.2.3-alpha2 > 1.2.3-alpha),
иначе build/NEXT_VERSION с суффиксом dev<расстояние>g<SHA>, а изменённое
рабочее дерево получает также dirty; вне git — <NEXT_VERSION>-dev0.
Скрипт: build/Get-GitVersion.ps1 (ASCII-only, PS 5.1).
Результат:
Version = 1.2.3-rc5 (чистый тег как есть)
InformationalVersion = 1.2.3-dev4g12ab34cd (нетегированная сборка)
AssemblyVersion = 1.2.3.0 (числовая, 4 части — требование .NET)
FileVersion = 1.2.3.0
Заголовок окна читает InformationalVersion (App.xaml.cs -> IProgramInfo).
Переопределение: /p:Version=... (явная версия) или /p:SkipGitVersion=true
(пропустить git, версия — дефолт SDK).
-->
<PropertyGroup>
<!-- InformationalVersion = тег без приписки +<sha> (SourceLink остаётся
работать для PDB, но версия в свойствах/заголовке — чистая). -->
<IncludeSourceRevisionInInformationalVersion>false</IncludeSourceRevisionInInformationalVersion>
<GitVersionScript Condition="Exists('$(MSBuildThisFileDirectory)build\Get-GitVersion.ps1')">$(MSBuildThisFileDirectory)build\Get-GitVersion.ps1</GitVersionScript>
</PropertyGroup>
<!-- До GetAssemblyVersion (SDK): задаём Version, из неё SDK сам считает
AssemblyVersion/FileVersion/InformationalVersion. _GitVersionExplicit —
маркер из Directory.Build.props (явный /p:Version=... в props-фазе). -->
<Target Name="ComputeVersionFromGitTag"
BeforeTargets="GetAssemblyVersion"
Condition="'$(_GitVersionExplicit)' != 'true' and '$(SkipGitVersion)' != 'true' and '$(GitVersionScript)' != ''">
<!-- Версия — в файл: Exec этой версии MSBuild не умеет ловить stdout в
свойство (нет параметра ConsoleOut). -->
<PropertyGroup>
<_GitVersionFile>$(IntermediateOutputPath)_gitversion.txt</_GitVersionFile>
</PropertyGroup>
<MakeDir Directories="$(IntermediateOutputPath)" />
<Delete Files="$(_GitVersionFile)" />
<Exec Command="powershell.exe -NoProfile -ExecutionPolicy Bypass -File "$(GitVersionScript)" -OutFile "$(_GitVersionFile)" -NextVersionFile "$(MSBuildThisFileDirectory)build\NEXT_VERSION""
ConsoleToMSBuild="true"
IgnoreExitCode="false" />
<PropertyGroup Condition="Exists('$(_GitVersionFile)')">
<_GitVersionRaw>$([System.IO.File]::ReadAllText('$(_GitVersionFile)'))</_GitVersionRaw>
</PropertyGroup>
<PropertyGroup Condition="'$(_GitVersionRaw.Trim())' != ''">
<Version>$(_GitVersionRaw.Trim())</Version>
</PropertyGroup>
<!-- Скрипт недоступен — явный dev-дефолт вместо дефолта SDK (1.0.0):
ошибки самого скрипта fail-closed останавливают сборку. -->
<PropertyGroup Condition="'$(_GitVersionRaw)' == ''">
<Version>0.1.0-alpha</Version>
</PropertyGroup>
</Target>
</Project>