aboutsummaryrefslogtreecommitdiff
path: root/src/Directory.Build.targets
diff options
context:
space:
mode:
Diffstat (limited to 'src/Directory.Build.targets')
-rw-r--r--src/Directory.Build.targets109
1 files changed, 109 insertions, 0 deletions
diff --git a/src/Directory.Build.targets b/src/Directory.Build.targets
new file mode 100644
index 00000000..c426f25e
--- /dev/null
+++ b/src/Directory.Build.targets
@@ -0,0 +1,109 @@
1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3<!--
4 Do NOT modify this file. Update the canonical version in Home\repo-template\src\Directory.Build.targets
5 then update all of the repos.
6-->
7<Project>
8 <PropertyGroup>
9 <SigningToolFolder>$(BaseOutputPath)obj\.tools</SigningToolFolder>
10 <SigningToolExe>$(SigningToolFolder)\SignClient.exe</SigningToolExe>
11 <SigningFilelist>$(SigningToolFolder)\empty-filelist.txt</SigningFilelist>
12 <SigningConfiguration>$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), signing.json))\signing.json</SigningConfiguration>
13 </PropertyGroup>
14
15 <Target Name="__FixupGitBaseVersion" BeforeTargets="_GitPopulateVersionInfo">
16 <PropertyGroup>
17 <GitBaseVersion>$(GitBaseVersion.Replace('{apiversion}', '$(ApiVersion)'))</GitBaseVersion>
18 <GitBaseVersion>$(GitBaseVersion.Replace('{height}', '$(GitCommits)'))</GitBaseVersion>
19 <GitBaseVersion>$(GitBaseVersion.Replace('{commits}', '$(GitCommits)'))</GitBaseVersion>
20 </PropertyGroup>
21 </Target>
22
23 <Target Name="__SetPropertiesFromGit" DependsOnTargets="GitVersion">
24 <PropertyGroup>
25 <AssemblyVersion>$(GitBaseVersionMajor).$(GitBaseVersionMinor).0.0</AssemblyVersion>
26 <FileVersion>$(GitBaseVersionMajor).$(GitBaseVersionMinor).$(GitBaseVersionPatch).$(GitCommits)</FileVersion>
27 <PackageVersion>$(GitBaseVersionMajor).$(GitBaseVersionMinor).$(GitBaseVersionPatch)$(GitSemVerDashLabel)</PackageVersion>
28 <InformationalVersion>$(GitBaseVersionMajor).$(GitBaseVersionMinor).$(GitBaseVersionPatch)$(GitSemVerDashLabel)+$(GitSha)</InformationalVersion>
29 <!-- We already included the $(GitSha) in the informational version so do not include it again. -->
30 <IncludeSourceRevisionInInformationalVersion>false</IncludeSourceRevisionInInformationalVersion>
31 </PropertyGroup>
32
33 <Message Importance="$(GitInfoReportImportance)" Text="Properties from Git:
34 GitCommits: $(GitCommits)
35 AssemblyVersion: $(AssemblyVersion)
36 FileVersion: $(FileVersion)
37 InformationalVersion: $(InformationalVersion)
38 PackageVersion: $(PackageVersion)
39" />
40 </Target>
41
42 <PropertyGroup>
43 <GenerateNuspecDependsOn>
44 $(GenerateNuspecDependsOn);
45 __SetNuspecProperties
46 </GenerateNuspecDependsOn>
47 </PropertyGroup>
48
49 <Target Name="__SetNuspecProperties" DependsOnTargets="__SetPropertiesFromGit"
50 Condition=" Exists('$(MSBuildProjectName).nuspec') ">
51 <PropertyGroup>
52 <ProjectUrl Condition=" '$(ProjectUrl)'=='' and '$(GitRepositoryUrl)'!='' ">$(GitRepositoryUrl.Replace('.git',''))</ProjectUrl>
53
54 <NuspecFile>$(MSBuildProjectName).nuspec</NuspecFile>
55 <NuspecBasePath Condition=" '$(NuspecBasePath)'=='' ">$([System.IO.Path]::GetFullPath($(OutputPath)..))\</NuspecBasePath>
56 <NuspecProperties>$(NuspecProperties);Id=$(PackageId);Authors="$(Authors)";Configuration=$(Configuration);Copyright="$(Copyright)";Description="$(Description)";Title="$(Title)"</NuspecProperties>
57 <NuspecProperties>$(NuspecProperties);Version=$(PackageVersion);RepositoryCommit=$(GitSha);RepositoryType=git;RepositoryUrl=$(GitRepositoryUrl);ProjectFolder=$(MSBuildProjectDirectory)\;ProjectUrl=$(ProjectUrl)</NuspecProperties>
58 <PublishRepositoryUrl>true</PublishRepositoryUrl>
59 <SymbolPackageFormat>snupkg</SymbolPackageFormat>
60 </PropertyGroup>
61
62 <Message Importance="$(GitInfoReportImportance)" Text="NuSpec info:
63 NuspecFile: $(NuspecFile)
64 NuspecBasePath: $(NuspecBasePath)
65 NuspecProperties: $(NuspecProperties)
66" />
67
68 </Target>
69
70 <Target Name="PackNative" DependsOnTargets="__SetNuspecProperties"
71 Condition=" Exists('$(MSBuildProjectName).nuspec') ">
72
73 <Exec Command='nuget pack $(NuspecFile) -OutputDirectory "$(BaseOutputPath)$(Configuration)" -BasePath "$(NuspecBasePath)" -Properties $(NuspecProperties)'
74 WorkingDirectory="$(MSBuildProjectDirectory)" />
75
76 <ItemGroup>
77 <NuGetPackOutput Include="$(BaseOutputPath)$(Configuration)\**\$(PackageId)*.nupkg" />
78 </ItemGroup>
79 </Target>
80
81 <Target Name="_GetSignClient"
82 Condition=" !Exists('$(SigningToolExe)') ">
83
84 <WriteLinesToFile File='$(SigningFilelist)' Lines='do-not-sign-files-in-nupkg' Overwrite='true' />
85
86 <Exec Command='dotnet.exe tool install --tool-path "$(SigningToolFolder)" SignClient' />
87 </Target>
88
89 <Target Name="SignOutput" DependsOnTargets="_GetSignClient" AfterTargets="AfterBuild"
90 Condition=" '$(SigningUser)'!='' and '$(SignOutput)'!='false' and
91 ('$(MSBuildProjectExtension)'=='.csproj' or ('$(MSBuildProjectExtension)'=='.vcxproj' and '$(ConfigurationType)'!='StaticLibrary'))">
92
93 <Exec Command='"$(SigningToolExe)" sign -i $(TargetPath) -c "$(SigningConfiguration)" -n "WiX Toolset" -d "WiX Toolset" -u https://wixtoolset.org/ -r "$(SigningUser)" -s "$(SigningSecret)"'
94 WorkingDirectory="$(MSBuildProjectDirectory)" EchoOff="true" />
95 </Target>
96
97 <Target Name="SignNupkg" DependsOnTargets="_GetSignClient" AfterTargets="Pack;PackNative"
98 Condition=" '$(SigningUser)'!='' and '@(NuGetPackOutput)'!='' and '$(SignNupkg)'!='false' ">
99 <ItemGroup>
100 <SigningNupkgs Include="@(NuGetPackOutput)" Condition=" '%(Extension)'=='.nupkg' " />
101 </ItemGroup>
102
103 <Exec Command='"$(SigningToolExe)" sign -i "@(SigningNupkgs->&apos;%(Identity)&apos;)" -c "$(SigningConfiguration)" -f "$(SigningFilelist)" -n "WiX Toolset" -d "WiX Toolset" -u https://wixtoolset.org/ -r "$(SigningUser)" -s "$(SigningSecret)"'
104 WorkingDirectory="$(MSBuildProjectDirectory)" EchoOff="true" />
105 </Target>
106
107 <Import Project="Directory$(MSBuildProjectExtension).targets" Condition=" Exists('Directory$(MSBuildProjectExtension).targets') " />
108 <Import Project="Custom.Build.targets" Condition=" Exists('Custom.Build.targets') " />
109</Project>