diff options
Diffstat (limited to 'src/Directory.Build.targets')
-rw-r--r-- | src/Directory.Build.targets | 109 |
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->'%(Identity)')" -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> | ||