Skip to content

Commit cc322ff

Browse files
authored
Merge pull request #1119 from onovotny/vs2017
Inject into correct point in build pipeline for VS 2017
2 parents e4e3959 + bcfafc4 commit cc322ff

File tree

4 files changed

+127
-11
lines changed

4 files changed

+127
-11
lines changed

docs/usage/msbuild-task.md

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ The MSBuild Task for GitVersion — **GitVersionTask** — is a simple solution
44
you want to version your assemblies without writing any command line scripts or
55
modifying your build process.
66

7+
It currently works with desktop `MSBuild`. Support for CoreCLR with `dotnet build` is coming soon.
8+
79
## TL;DR
810

911
### Install the MSTask targets
@@ -16,6 +18,14 @@ From the Package Manager Console:
1618
Install-Package GitVersionTask
1719
```
1820

21+
If you're using `PackageReference` style NuGet dependencies (VS 2017+), add `<PrivateAssets>all</PrivateAssets>` to prevent the task from becoming a dependency of your package:
22+
23+
``` xml
24+
<PackageReference Include="GitVersionTask" Version="4.0.0-beta*">
25+
<PrivateAssets>All</PrivateAssets>
26+
</PackageReference>
27+
```
28+
1929
### Remove AssemblyInfo attributes
2030

2131
The next thing you need to do is to remove the `Assembly*Version` attributes from
@@ -115,6 +125,17 @@ However at MSBuild time these properties are mapped to MSBuild properties that
115125
are prefixed with `GitVersion_`. This prevents conflicts with other properties
116126
in the pipeline.
117127

128+
In addition, the following MSBuild properties are set when `UpdateVersionProperties` is true (the default):
129+
`Version`, `VersionPrefix`, `VersionSuffix`, `PackageVersion`, `InformationalVersion`, `AssemblyVersion` and `FileVersion`. These are used by the built-in tasks for generating AssemblyInfo's and NuGet package versions.
130+
131+
132+
### NuGet packages
133+
The new SDK-style projects available for .NET Standard libraries (and multi-targeting), have the ability
134+
to create NuGet packages directly by using the `pack` target: `msbuild /t:pack`. The version is controled by the MSBuild properties described above.
135+
136+
GitVersionTask has the option to generate SemVer 2.0 compliant NuGet package versions by setting `UseFullSemVerForNuGet` to true in your project (this is off by default for compatibility). Some hosts, like MyGet, support SemVer 2.0 package versions but older NuGet clients and nuget.org do not.
137+
138+
118139
#### Accessing variables in MSBuild
119140

120141
Once `GitVersionTask.GetVersion` has been executed, the MSBuild properties can be
@@ -136,7 +157,7 @@ Build Server log in a format that the current Build Server can consume. See
136157

137158
## Conditional control tasks
138159

139-
Properties `WriteVersionInfoToBuildLog`, `UpdateAssemblyInfo` and `GetVersion`
160+
Properties `WriteVersionInfoToBuildLog`, `UpdateAssemblyInfo`, `UseFullSemVerForNuGet`, `UpdateVersionProperties` and `GetVersion`
140161
are checked before running these tasks.
141162

142163
You can disable `GitVersionTask.UpdateAssemblyInfo` by setting
@@ -150,6 +171,7 @@ this:
150171
...
151172
</PropertyGroup>
152173
```
174+
For SDK-style projects, `UpdateVersionProperties` controls setting the default variables: `Version`, `VersionPrefix`, `VersionSuffix`, `PackageVersion`, `InformationalVersion`, `AssemblyVersion` and `FileVersion`.
153175

154176
## My Git repository requires authentication. What should I do?
155177

src/GitVersionTask/GitVersionTask.csproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,8 @@
7979
</ItemGroup>
8080
<ItemGroup>
8181
<None Include="app.config" />
82-
<None Include="NugetAssets\GitVersionTask.targets">
83-
<SubType>Designer</SubType>
84-
</None>
82+
<None Include="NugetAssets\buildMultiTargeting\GitVersionTask.targets" />
83+
<None Include="NugetAssets\build\GitVersionTask.targets" />
8584
<None Include="NugetAssets\GitVersionTask.nuspec">
8685
<SubType>Designer</SubType>
8786
</None>
@@ -127,7 +126,8 @@
127126
<Copy SourceFiles="$(TargetDir)ILMergeTemp\GitVersionTask.dll" DestinationFolder="$(BuildDir)NuGetTaskBuild\build" Condition="Exists('$(TargetDir)ILMergeTemp\GitVersionTask.dll')" />
128127
<Copy SourceFiles="$(TargetDir)GitVersionTask.pdb" DestinationFolder="$(BuildDir)NuGetTaskBuild\build" Condition="Exists('$(TargetDir)GitVersionTask.pdb')" />
129128
<Copy SourceFiles="$(TargetDir)GitVersionTask.dll.mdb" DestinationFolder="$(BuildDir)NuGetTaskBuild\build" Condition="Exists('$(TargetDir)GitVersionTask.dll.mdb')" />
130-
<Copy SourceFiles="$(ProjectDir)NugetAssets\GitVersionTask.targets" DestinationFolder="$(BuildDir)NuGetTaskBuild\build" />
129+
<Copy SourceFiles="$(ProjectDir)NugetAssets\build\GitVersionTask.targets" DestinationFolder="$(BuildDir)NuGetTaskBuild\build" />
130+
<Copy SourceFiles="$(ProjectDir)NugetAssets\buildMultiTargeting\GitVersionTask.targets" DestinationFolder="$(BuildDir)NuGetTaskBuild\buildMultiTargeting" />
131131
<Copy SourceFiles="$(ProjectDir)NugetAssets\GitVersionTask.nuspec" DestinationFolder="$(BuildDir)NuGetTaskBuild" />
132132
<PepitaPackage.CreatePackageTask NuGetBuildDirectory="$(BuildDir)NuGetTaskBuild" MetadataAssembly="$(ILMergeTemp)GitVersionTask.dll" Version="$(GitVersion_NuGetVersion)" />
133133
<Delete Files="@(TempFiles)" />

src/GitVersionTask/NugetAssets/GitVersionTask.targets renamed to src/GitVersionTask/NugetAssets/build/GitVersionTask.targets

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,13 @@
88
<!-- Property that enables WriteVersionInfoToBuildLog -->
99
<WriteVersionInfoToBuildLog Condition=" '$(WriteVersionInfoToBuildLog)' == '' ">true</WriteVersionInfoToBuildLog>
1010

11-
<!-- Property that enables UpdateAssemblyInfo -->
11+
<!-- Property that enables UpdateAssemblyInfo. Default to off for SDK builds -->
12+
<UpdateAssemblyInfo Condition=" '$(UpdateAssemblyInfo)' == '' and '$(TargetFramework)' != '' ">false</UpdateAssemblyInfo>
1213
<UpdateAssemblyInfo Condition=" '$(UpdateAssemblyInfo)' == '' ">true</UpdateAssemblyInfo>
14+
15+
<!-- Property that enables setting of Version -->
16+
<UpdateVersionProperties Condition=" '$(UpdateVersionProperties)' == '' ">true</UpdateVersionProperties>
17+
<UseFullSemVerForNuGet Condition=" '$(UseFullSemVerForNuGet)' == '' ">false</UseFullSemVerForNuGet>
1318

1419
<!-- Property that enables GetVersion -->
1520
<GetVersion Condition=" '$(GetVersion)' == '' ">true</GetVersion>
@@ -27,7 +32,7 @@
2732
TaskName="GitVersionTask.WriteVersionInfoToBuildLog"
2833
AssemblyFile="$(GitVersionTaskLibrary)GitVersionTask.dll" />
2934

30-
<Target Name="WriteVersionInfoToBuildLog" BeforeTargets="CoreCompile" Condition="$(WriteVersionInfoToBuildLog) == 'true'">
35+
<Target Name="WriteVersionInfoToBuildLog" BeforeTargets="CoreCompile;GetAssemblyVersion;GenerateNuspec" Condition="$(WriteVersionInfoToBuildLog) == 'true'">
3136
<WriteVersionInfoToBuildLog SolutionDirectory="$(SolutionDir)" NoFetch="$(GitVersion_NoFetchEnabled)"/>
3237
</Target>
3338

@@ -49,7 +54,7 @@
4954
</ItemGroup>
5055
</Target>
5156

52-
<Target Name="GetVersion" BeforeTargets="CoreCompile" Condition="$(GetVersion) == 'true'">
57+
<Target Name="GetVersion" BeforeTargets="CoreCompile;GetAssemblyVersion;GenerateNuspec" Condition="$(GetVersion) == 'true'">
5358

5459
<GetVersion SolutionDirectory="$(SolutionDir)" NoFetch="$(GitVersion_NoFetchEnabled)">
5560
<Output TaskParameter="Major" PropertyName="GitVersion_Major" />
@@ -77,6 +82,18 @@
7782
<Output TaskParameter="CommitsSinceVersionSource" PropertyName="GitVersion_CommitsSinceVersionSource" />
7883
<Output TaskParameter="CommitsSinceVersionSourcePadded" PropertyName="GitVersion_CommitsSinceVersionSourcePadded" />
7984
</GetVersion>
85+
86+
<PropertyGroup Condition=" '$(UpdateVersionProperties)' == 'true' ">
87+
<Version>$(GitVersion_FullSemVer)</Version>
88+
<VersionPrefix>$(GitVersion_MajorMinorPatch)</VersionPrefix>
89+
<VersionSuffix Condition=" '$(UseFullSemVerForNuGet)' == 'false' ">$(GitVersion_NuGetPreReleaseTag)</VersionSuffix>
90+
<VersionSuffix Condition=" '$(UseFullSemVerForNuGet)' == 'true' ">$(GitVersion_PreReleaseTag)</VersionSuffix>
91+
<PackageVersion Condition=" '$(UseFullSemVerForNuGet)' == 'false' ">$(GitVersion_NuGetVersion)</PackageVersion>
92+
<PackageVersion Condition=" '$(UseFullSemVerForNuGet)' == 'true' ">$(GitVersion_FullSemVer)</PackageVersion>
93+
<InformationalVersion Condition=" '$(InformationalVersion)' == '' ">$(GitVersion_InformationalVersion)</InformationalVersion>
94+
<AssemblyVersion Condition=" '$(AssemblyVersion)' == '' ">$(GitVersion_AssemblySemVer)</AssemblyVersion>
95+
<FileVersion Condition=" '$(FileVersion)' == '' ">$(GitVersion_MajorMinorPatch).$(GitVersion_CommitsSinceVersionSource)</FileVersion>
96+
</PropertyGroup>
8097

8198
</Target>
8299

@@ -93,6 +110,4 @@
93110
</None>
94111
</ItemGroup>
95112

96-
</Project>
97-
98-
113+
</Project>
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
<PropertyGroup>
4+
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">$(MSBuildProjectDirectory)\..\</SolutionDir>
5+
<GitVersion_NoFetchEnabled Condition="$(GitVersion_NoFetchEnabled) == ''">false</GitVersion_NoFetchEnabled>
6+
7+
<!-- Property that enables WriteVersionInfoToBuildLog -->
8+
<WriteVersionInfoToBuildLog Condition=" '$(WriteVersionInfoToBuildLog)' == '' ">true</WriteVersionInfoToBuildLog>
9+
10+
<!-- Property that enables UpdateAssemblyInfo. Default to off for SDK builds -->
11+
<UpdateAssemblyInfo Condition=" '$(UpdateAssemblyInfo)' == '' and '$(TargetFramework)' != '' ">false</UpdateAssemblyInfo>
12+
<UpdateAssemblyInfo Condition=" '$(UpdateAssemblyInfo)' == '' ">true</UpdateAssemblyInfo>
13+
14+
<GetVersion Condition=" '$(GetVersion)' == '' ">true</GetVersion>
15+
16+
<!-- Property that enables setting of Version -->
17+
<UpdateVersionProperties Condition=" '$(UpdateVersionProperties)' == '' ">true</UpdateVersionProperties>
18+
<UseFullSemVerForNuGet Condition=" '$(UseFullSemVerForNuGet)' == '' ">false</UseFullSemVerForNuGet>
19+
20+
<GitVersionTaskLibrary>$(MSBuildThisFileDirectory)..\build\</GitVersionTaskLibrary>
21+
</PropertyGroup>
22+
23+
<UsingTask
24+
TaskName="GitVersionTask.UpdateAssemblyInfo"
25+
AssemblyFile="$(GitVersionTaskLibrary)GitVersionTask.dll" />
26+
<UsingTask
27+
TaskName="GitVersionTask.GetVersion"
28+
AssemblyFile="$(GitVersionTaskLibrary)GitVersionTask.dll" />
29+
<UsingTask
30+
TaskName="GitVersionTask.WriteVersionInfoToBuildLog"
31+
AssemblyFile="$(GitVersionTaskLibrary)GitVersionTask.dll" />
32+
33+
<Target Name="WriteVersionInfoToBuildLog" BeforeTargets="DispatchToInnerBuilds;GenerateNuspec" Condition="$(WriteVersionInfoToBuildLog) == 'true'">
34+
<WriteVersionInfoToBuildLog SolutionDirectory="$(SolutionDir)" NoFetch="$(GitVersion_NoFetchEnabled)"/>
35+
</Target>
36+
37+
<Target Name="GetVersion" BeforeTargets="DispatchToInnerBuilds;GenerateNuspec" Condition="$(GetVersion) == 'true'">
38+
39+
<GetVersion SolutionDirectory="$(SolutionDir)" NoFetch="$(GitVersion_NoFetchEnabled)">
40+
<Output TaskParameter="Major" PropertyName="GitVersion_Major" />
41+
<Output TaskParameter="Minor" PropertyName="GitVersion_Minor" />
42+
<Output TaskParameter="Patch" PropertyName="GitVersion_Patch" />
43+
<Output TaskParameter="BuildMetaData" PropertyName="GitVersion_BuildMetaData" />
44+
<Output TaskParameter="BuildMetaDataPadded" PropertyName="GitVersion_BuildMetaDataPadded" />
45+
<Output TaskParameter="FullBuildMetaData" PropertyName="GitVersion_FullBuildMetaData" />
46+
<Output TaskParameter="BranchName" PropertyName="GitVersion_BranchName" />
47+
<Output TaskParameter="Sha" PropertyName="GitVersion_Sha" />
48+
<Output TaskParameter="MajorMinorPatch" PropertyName="GitVersion_MajorMinorPatch" />
49+
<Output TaskParameter="SemVer" PropertyName="GitVersion_SemVer" />
50+
<Output TaskParameter="LegacySemVer" PropertyName="GitVersion_LegacySemVer" />
51+
<Output TaskParameter="LegacySemVerPadded" PropertyName="GitVersion_LegacySemVerPadded" />
52+
<Output TaskParameter="FullSemVer" PropertyName="GitVersion_FullSemVer" />
53+
<Output TaskParameter="AssemblySemVer" PropertyName="GitVersion_AssemblySemVer" />
54+
<Output TaskParameter="NuGetVersion" PropertyName="GitVersion_NuGetVersion" />
55+
<Output TaskParameter="NuGetPreReleaseTag" PropertyName="GitVersion_NuGetPreReleaseTag" />
56+
<Output TaskParameter="PreReleaseTag" PropertyName="GitVersion_PreReleaseTag" />
57+
<Output TaskParameter="PreReleaseTagWithDash" PropertyName="GitVersion_PreReleaseTagWithDash" />
58+
<Output TaskParameter="PreReleaseLabel" PropertyName="GitVersion_PreReleaseLabel" />
59+
<Output TaskParameter="PreReleaseNumber" PropertyName="GitVersion_PreReleaseNumber" />
60+
<Output TaskParameter="InformationalVersion" PropertyName="GitVersion_InformationalVersion" />
61+
<Output TaskParameter="CommitDate" PropertyName="GitVersion_CommitDate" />
62+
<Output TaskParameter="CommitsSinceVersionSource" PropertyName="GitVersion_CommitsSinceVersionSource" />
63+
<Output TaskParameter="CommitsSinceVersionSourcePadded" PropertyName="GitVersion_CommitsSinceVersionSourcePadded" />
64+
</GetVersion>
65+
66+
<PropertyGroup Condition=" '$(UpdateVersionProperties)' == 'true' ">
67+
<Version>$(GitVersion_FullSemVer)</Version>
68+
<VersionPrefix>$(GitVersion_MajorMinorPatch)</VersionPrefix>
69+
<VersionSuffix Condition=" '$(UseFullSemVerForNuGet)' == 'false' ">$(GitVersion_NuGetPreReleaseTag)</VersionSuffix>
70+
<VersionSuffix Condition=" '$(UseFullSemVerForNuGet)' == 'true' ">$(GitVersion_PreReleaseTag)</VersionSuffix>
71+
<PackageVersion Condition=" '$(UseFullSemVerForNuGet)' == 'false' ">$(GitVersion_NuGetVersion)</PackageVersion>
72+
<PackageVersion Condition=" '$(UseFullSemVerForNuGet)' == 'true' ">$(GitVersion_FullSemVer)</PackageVersion>
73+
<InformationalVersion Condition=" '$(InformationalVersion)' == '' ">$(GitVersion_InformationalVersion)</InformationalVersion>
74+
<AssemblyVersion Condition=" '$(AssemblyVersion)' == '' ">$(GitVersion_AssemblySemVer)</AssemblyVersion>
75+
<FileVersion Condition=" '$(FileVersion)' == '' ">$(GitVersion_MajorMinorPatch).$(GitVersion_CommitsSinceVersionSource)</FileVersion>
76+
</PropertyGroup>
77+
78+
</Target>
79+
</Project>

0 commit comments

Comments
 (0)