diff options
Diffstat (limited to 'src/Directory.Build.targets')
-rw-r--r-- | src/Directory.Build.targets | 87 |
1 files changed, 56 insertions, 31 deletions
diff --git a/src/Directory.Build.targets b/src/Directory.Build.targets index dac7452a..44701fb6 100644 --- a/src/Directory.Build.targets +++ b/src/Directory.Build.targets | |||
@@ -4,45 +4,70 @@ | |||
4 | Do NOT modify this file. Update the canonical version in Home\repo-template\src\Directory.Build.targets | 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. | 5 | then update all of the repos. |
6 | --> | 6 | --> |
7 | <!-- | ||
8 | Replace PackageReferences with ProjectReferences when the projects can be found in .sln. | ||
9 | See the original here: https://github.com/dotnet/sdk/issues/1151#issuecomment-385133284 | ||
10 | --> | ||
11 | <Project> | 7 | <Project> |
12 | <PropertyGroup> | 8 | <PropertyGroup> |
13 | <ReplacePackageReferences>true</ReplacePackageReferences> | 9 | <SigningToolFolder>$(BaseOutputPath)obj\.tools</SigningToolFolder> |
14 | <TheSolutionPath Condition=" '$(NCrunch)'=='' ">$(SolutionPath)</TheSolutionPath> | 10 | <SigningToolExe>$(SigningToolFolder)\SignClient.exe</SigningToolExe> |
15 | <TheSolutionPath Condition=" '$(NCrunch)'=='1' ">$(NCrunchOriginalSolutionPath)</TheSolutionPath> | 11 | <SigningFilelist>$(SigningToolFolder)\empty-filelist.txt</SigningFilelist> |
12 | <SigningConfiguration>$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), signing.json))\signing.json</SigningConfiguration> | ||
13 | </PropertyGroup> | ||
14 | |||
15 | <PropertyGroup> | ||
16 | <CreateDocumentation Condition=" '$(CreateDocumentationFile)'!='true' ">false</CreateDocumentation> | ||
17 | <DocumentationFile Condition=" '$(CreateDocumentationFile)'=='true' ">$(OutputPath)\$(AssemblyName).xml</DocumentationFile> | ||
16 | </PropertyGroup> | 18 | </PropertyGroup> |
17 | 19 | ||
18 | <Choose> | 20 | <Target Name="SetNuspecProperties" DependsOnTargets="InitializeSourceControlInformation" AfterTargets="GetBuildVersion" |
19 | <When Condition="$(ReplacePackageReferences) AND '$(TheSolutionPath)' != '' AND '$(TheSolutionPath)' != '*undefined*' AND Exists('$(TheSolutionPath)')"> | 21 | Condition=" Exists('$(MSBuildProjectName).nuspec') "> |
22 | <PropertyGroup> | ||
23 | <ProjectUrl Condition=" '$(ProjectUrl)'=='' and '$(PrivateRepositoryUrl)'!='' ">$(PrivateRepositoryUrl.Replace('.git',''))</ProjectUrl> | ||
24 | |||
25 | <NuspecFile>$(MSBuildProjectName).nuspec</NuspecFile> | ||
26 | <NuspecBasePath Condition=" '$(NuspecBasePath)'=='' ">$(MSBuildProjectDirectory)</NuspecBasePath> | ||
27 | <NuspecProperties>$(NuspecProperties);Id=$(PackageId);Authors="$(Authors)";Configuration=$(Configuration);Copyright="$(Copyright)";Description="$(Description)";Title="$(Title)"</NuspecProperties> | ||
28 | <NuspecProperties>$(NuspecProperties);Version=$(NPMPackageVersion);RepositoryCommit=$(SourceRevisionId);RepositoryType=$(RepositoryType);RepositoryUrl=$(PrivateRepositoryUrl);ProjectFolder=$(MSBuildProjectDirectory)\;ProjectUrl=$(ProjectUrl)</NuspecProperties> | ||
29 | <PublishRepositoryUrl>true</PublishRepositoryUrl> | ||
30 | <SymbolPackageFormat>snupkg</SymbolPackageFormat> | ||
31 | </PropertyGroup> | ||
32 | </Target> | ||
33 | |||
34 | <Target Name="PackNative" DependsOnTargets="GetBuildVersion;SetNuspecProperties" | ||
35 | Condition=" Exists('$(MSBuildProjectName).nuspec') "> | ||
36 | |||
37 | <Exec Command='nuget pack $(NuspecFile) -OutputDirectory "$(BaseOutputPath)$(Configuration)" -BasePath "$(NuspecBasePath)" -Properties $(NuspecProperties)' | ||
38 | WorkingDirectory="$(MSBuildProjectDirectory)" /> | ||
39 | |||
40 | <ItemGroup> | ||
41 | <NuGetPackOutput Include="$(BaseOutputPath)$(Configuration)\**\$(PackageId)*.nupkg" /> | ||
42 | </ItemGroup> | ||
43 | </Target> | ||
44 | |||
45 | <Target Name="_GetSignClient" | ||
46 | Condition=" !Exists('$(SigningToolExe)') "> | ||
47 | |||
48 | <WriteLinesToFile File='$(SigningFilelist)' Lines='do-not-sign-files-in-nupkg' Overwrite='true' /> | ||
20 | 49 | ||
21 | <PropertyGroup> | 50 | <Exec Command='dotnet.exe tool install --tool-path "$(SigningToolFolder)" SignClient' /> |
22 | <SolutionFileContent>$([System.IO.File]::ReadAllText($(TheSolutionPath)))</SolutionFileContent> | 51 | </Target> |
23 | <SmartSolutionDir>$([System.IO.Path]::GetDirectoryName( $(TheSolutionPath) ))</SmartSolutionDir> | ||
24 | <RegexPattern>(?<="[PackageName]", ")(.*)(?=", ")</RegexPattern> | ||
25 | </PropertyGroup> | ||
26 | 52 | ||
27 | <ItemGroup> | 53 | <Target Name="SignOutput" DependsOnTargets="_GetSignClient" AfterTargets="AfterBuild" |
28 | <!-- Keep the identity of the PackageReference --> | 54 | Condition=" '$(SigningUser)'!='' and '$(SignOutput)'!='false' and |
29 | <SmartPackageReference Include="@(PackageReference)"> | 55 | ('$(MSBuildProjectExtension)'=='.csproj' or ('$(MSBuildProjectExtension)'=='.vcxproj' and '$(ConfigurationType)'!='StaticLibrary'))"> |
30 | <PackageName>%(Identity)</PackageName> | ||
31 | <InSolution>$(SolutionFileContent.Contains('\%(Identity).csproj'))</InSolution> | ||
32 | </SmartPackageReference> | ||
33 | 56 | ||
34 | <!-- Filter them by mapping them to another ItemGroup using the WithMetadataValue item function --> | 57 | <Exec Command='"$(SigningToolExe)" sign -i $(TargetPath) -c "$(SigningConfiguration)" -n "WiX Toolset" -d "WiX Toolset" -u https://wixtoolset.org/ -r "$(SigningUser)" -s "$(SigningSecret)"' |
35 | <PackageInSolution Include="@(SmartPackageReference->WithMetadataValue('InSolution', True))"> | 58 | WorkingDirectory="$(MSBuildProjectDirectory)" EchoOff="true" /> |
36 | <Pattern>$(RegexPattern.Replace('[PackageName]','%(PackageName)') )</Pattern> | 59 | </Target> |
37 | <SmartPath>$([System.Text.RegularExpressions.Regex]::Match('$(SolutionFileContent)', '%(Pattern)'))</SmartPath> | ||
38 | </PackageInSolution> | ||
39 | 60 | ||
40 | <ProjectReference Include="@(PackageInSolution->'$(SmartSolutionDir)\%(SmartPath)' )"/> | 61 | <Target Name="SignNupkg" DependsOnTargets="_GetSignClient" AfterTargets="Pack;PackNative" |
62 | Condition=" '$(SigningUser)'!='' and '@(NuGetPackOutput)'!='' and '$(SignNupkg)'!='false' "> | ||
63 | <ItemGroup> | ||
64 | <SigningNupkgs Include="@(NuGetPackOutput)" Condition=" '%(Extension)'=='.nupkg' " /> | ||
65 | </ItemGroup> | ||
41 | 66 | ||
42 | <!-- Remove the package references that are now referenced as projects --> | 67 | <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)"' |
43 | <PackageReference Remove="@(PackageInSolution->'%(PackageName)' )"/> | 68 | WorkingDirectory="$(MSBuildProjectDirectory)" EchoOff="true" /> |
44 | </ItemGroup> | 69 | </Target> |
45 | 70 | ||
46 | </When> | 71 | <Import Project="Directory$(MSBuildProjectExtension).targets" Condition=" Exists('Directory$(MSBuildProjectExtension).targets') " /> |
47 | </Choose> | 72 | <Import Project="Custom.Build.targets" Condition=" Exists('Custom.Build.targets') " /> |
48 | </Project> | 73 | </Project> |