Integrate new build scripts with signing support
Rob Mensching committed
Apr 21, 2021 at 11:01 UTC
d2f27517dffc02b7c50e386793c7ad89762c6b64
13 files changed
+112
-71
.gitignore
+32
-11
@@ -13,6 +13,9 @@
13
# User-specific files (MonoDevelop/Xamarin Studio)
14
*.userprefs
15
16
+# Mono auto generated files
17
+mono_crash.*
18
+
19
# Build results
20
[Dd]ebug/
21
[Dd]ebugPublic/
@@ -20,12 +23,14 @@
23
[Rr]eleases/
24
x64/
25
x86/
26
+[Ww][Ii][Nn]32/
27
[Aa][Rr][Mm]/
28
[Aa][Rr][Mm]64/
29
bld/
30
[Bb]in/
31
[Oo]bj/
32
[Ll]og/
33
+[Ll]ogs/
34
35
# Visual Studio 2015/2017 cache/options directory
36
.vs/
@@ -39,9 +44,10 @@ Generated\ Files/
44
[Tt]est[Rr]esult*/
45
[Bb]uild[Ll]og.*
46
42
-# NUNIT
47
+# NUnit
48
*.VisualState.xml
49
TestResult.xml
50
+nunit-*.xml
51
52
# Build Results of an ATL Project
53
[Dd]ebugPS/
@@ -56,6 +62,9 @@ project.lock.json
62
project.fragment.lock.json
63
artifacts/
64
65
+# ASP.NET Scaffolding
66
+ScaffoldingReadMe.txt
67
+
68
# StyleCop
69
StyleCopReport.xml
70
@@ -122,9 +131,6 @@ _ReSharper*/
131
*.[Rr]e[Ss]harper
132
*.DotSettings.user
133
125
-# JustCode is a .NET coding add-in
126
-.JustCode
127
-
134
# TeamCity is a build add-in
135
_TeamCity*
136
@@ -135,6 +141,11 @@ _TeamCity*
141
.axoCover/*
142
!.axoCover/settings.json
143
144
+# Coverlet is a free, cross platform Code Coverage Tool
145
+coverage*.json
146
+coverage*.xml
147
+coverage*.info
148
+
149
# Visual Studio code coverage results
150
*.coverage
151
*.coveragexml
@@ -182,6 +193,8 @@ PublishScripts/
193
194
# NuGet Packages
195
*.nupkg
196
+# NuGet Symbol Packages
197
+*.snupkg
198
# The packages folder can be ignored because of Package Restore
199
**/[Pp]ackages/*
200
# except build/, which is used as an MSBuild target.
@@ -206,6 +219,8 @@ BundleArtifacts/
219
Package.StoreAssociation.xml
220
_pkginfo.txt
221
*.appx
222
+*.appxbundle
223
+*.appxupload
224
225
# Visual Studio cache files
226
# files ending in .cache can be ignored
@@ -231,8 +246,6 @@ orleans.codegen.cs
246
# Since there are multiple workflows, uncomment next line to ignore bower_components
247
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
248
#bower_components/
234
-# ASP.NET Core default setup: bower directory is configured as wwwroot/lib/ and bower restore is true
235
-**/wwwroot/lib/
249
250
# RIA/Silverlight projects
251
Generated_Code/
@@ -257,6 +270,9 @@ ServiceFabricBackup/
270
*.bim.layout
271
*.bim_*.settings
272
*.rptproj.rsuser
273
+*- [Bb]ackup.rdl
274
+*- [Bb]ackup ([0-9]).rdl
275
+*- [Bb]ackup ([0-9][0-9]).rdl
276
277
# Microsoft Fakes
278
FakesAssemblies/
@@ -292,10 +308,6 @@ paket-files/
308
# FAKE - F# Make
309
.fake/
310
295
-# JetBrains Rider
296
-.idea/
297
-*.sln.iml
298
-
311
# CodeRush personal settings
312
.cr/personal
313
@@ -337,5 +349,14 @@ ASALocalRun/
349
# Local History for Visual Studio
350
.localhistory/
351
340
-# BeatPulse healthcheck temp database
352
+# BeatPulse healthcheck temp database
353
healthchecksdb
354
+
355
+# Backup folder for Package Reference Convert tool in Visual Studio 2017
356
+MigrationBackup/
357
+
358
+# Ionide (cross platform F# VS Code tools) working folder
359
+.ionide/
360
+
361
+# Fody - auto-generated XML schema
362
+FodyWeavers.xsd
\ No newline at end of file
appveyor.cmd
+3
-2
@@ -1,6 +1,7 @@
1
@setlocal
2
@pushd %~dp0
3
@set _C=Release
4
+@if /i "%1"=="debug" set _C=Debug
5
6
nuget restore || exit /b
7
@@ -17,8 +18,8 @@ msbuild -p:Configuration=%_C%;Platform=ARM64;PlatformToolset=v142 || exit /b
18
19
dotnet test -c %_C% --no-build src\test\WixToolsetTest.Mba.Core\WixToolsetTest.Mba.Core.csproj || exit /b
20
20
-msbuild -t:Pack -p:Configuration=%_C% src\balutil\balutil.vcxproj || exit /b
21
-msbuild -t:Pack -p:Configuration=%_C% src\bextutil\bextutil.vcxproj || exit /b
21
+msbuild -t:PackNative -p:Configuration=%_C% src\balutil\balutil.vcxproj || exit /b
22
+msbuild -t:PackNative -p:Configuration=%_C% src\bextutil\bextutil.vcxproj || exit /b
23
msbuild -t:Pack -p:Configuration=%_C% -p:NoBuild=true src\WixToolset.Mba.Core\WixToolset.Mba.Core.csproj || exit /b
24
25
@popd
signing.json
new
+13
@@ -0,0 +1,13 @@
1
+{
2
+ "SignClient": {
3
+ "AzureAd": {
4
+ "AADInstance": "https://login.microsoftonline.com/",
5
+ "ClientId": "c248d68a-ba6f-4aa9-8a68-71fe872063f8",
6
+ "TenantId": "16076fdc-fcc1-4a15-b1ca-32c9a255900e"
7
+ },
8
+ "Service": {
9
+ "Url": "https://codesign.dotnetfoundation.org/",
10
+ "ResourceId": "https://SignService/3c30251f-36f3-490b-a955-520addb85001"
11
+ }
12
+ }
13
+}
src/Directory.Build.props
+1
-4
@@ -8,7 +8,6 @@
8
<PropertyGroup>
9
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
10
<EnableSourceLink Condition=" '$(NCrunch)' == '1' ">false</EnableSourceLink>
11
- <MSBuildWarningsAsMessages>MSB3246</MSBuildWarningsAsMessages>
11
12
<ProjectName Condition=" '$(ProjectName)' == '' ">$(MSBuildProjectName)</ProjectName>
13
<BaseOutputPath>$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\build\))</BaseOutputPath>
@@ -22,8 +21,6 @@
21
<Product>WiX Toolset</Product>
22
</PropertyGroup>
23
25
- <Import Project="CSharp.Build.props" Condition=" '$(MSBuildProjectExtension)'=='.csproj' and Exists('CSharp.Build.props') " />
26
- <Import Project="Cpp.Build.props" Condition=" Exists('Cpp.Build.props') And '$(MSBuildProjectExtension)'=='.vcxproj' " />
27
- <Import Project="Wix.Build.props" Condition=" Exists('Wix.Build.props') And '$(MSBuildProjectExtension)'=='.wixproj' " />
24
+ <Import Project="Directory$(MSBuildProjectExtension).props" Condition=" Exists('Directory$(MSBuildProjectExtension).props') " />
25
<Import Project="Custom.Build.props" Condition=" Exists('Custom.Build.props') " />
26
</Project>
src/Directory.Build.targets
+51
-34
@@ -4,53 +4,70 @@
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
-<!--
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
--->
7
<Project>
8
<PropertyGroup>
13
- <CreateDocumentation Condition=" '$(CreateDocumentationFile)'!='true' ">false</CreateDocumentation>
14
- <DocumentationFile Condition=" '$(CreateDocumentationFile)'=='true' ">$(OutputPath)\$(AssemblyName).xml</DocumentationFile>
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
<PropertyGroup>
18
- <ReplacePackageReferences>true</ReplacePackageReferences>
19
- <TheSolutionPath Condition=" '$(NCrunch)'=='' ">$(SolutionPath)</TheSolutionPath>
20
- <TheSolutionPath Condition=" '$(NCrunch)'=='1' ">$(NCrunchOriginalSolutionPath)</TheSolutionPath>
16
+ <CreateDocumentation Condition=" '$(CreateDocumentationFile)'!='true' ">false</CreateDocumentation>
17
+ <DocumentationFile Condition=" '$(CreateDocumentationFile)'=='true' ">$(OutputPath)\$(AssemblyName).xml</DocumentationFile>
18
</PropertyGroup>
19
23
- <Choose>
24
- <When Condition="$(ReplacePackageReferences) AND '$(TheSolutionPath)' != '' AND '$(TheSolutionPath)' != '*undefined*' AND Exists('$(TheSolutionPath)')">
20
+ <Target Name="SetNuspecProperties" DependsOnTargets="InitializeSourceControlInformation" AfterTargets="GetBuildVersion"
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
26
- <PropertyGroup>
27
- <SolutionFileContent>$([System.IO.File]::ReadAllText($(TheSolutionPath)))</SolutionFileContent>
28
- <SmartSolutionDir>$([System.IO.Path]::GetDirectoryName( $(TheSolutionPath) ))</SmartSolutionDir>
29
- <RegexPattern>(?<="[PackageName]", ")(.*)(?=", ")</RegexPattern>
30
- </PropertyGroup>
48
+ <WriteLinesToFile File='$(SigningFilelist)' Lines='do-not-sign-files-in-nupkg' Overwrite='true' />
49
32
- <ItemGroup>
33
- <!-- Keep the identity of the PackageReference -->
34
- <SmartPackageReference Include="@(PackageReference)">
35
- <PackageName>%(Identity)</PackageName>
36
- <InSolution>$(SolutionFileContent.Contains('\%(Identity).csproj'))</InSolution>
37
- </SmartPackageReference>
50
+ <Exec Command='dotnet.exe tool install --tool-path "$(SigningToolFolder)" SignClient' />
51
+ </Target>
52
39
- <!-- Filter them by mapping them to another ItemGroup using the WithMetadataValue item function -->
40
- <PackageInSolution Include="@(SmartPackageReference->WithMetadataValue('InSolution', True))">
41
- <Pattern>$(RegexPattern.Replace('[PackageName]','%(PackageName)') )</Pattern>
42
- <SmartPath>$([System.Text.RegularExpressions.Regex]::Match('$(SolutionFileContent)', '%(Pattern)'))</SmartPath>
43
- </PackageInSolution>
53
+ <Target Name="SignOutput" DependsOnTargets="_GetSignClient" AfterTargets="AfterBuild"
54
+ Condition=" '$(SigningUser)'!='' and '$(SignOutput)'!='false' and
55
+ ('$(MSBuildProjectExtension)'=='.csproj' or ('$(MSBuildProjectExtension)'=='.vcxproj' and '$(ConfigurationType)'!='StaticLibrary'))">
56
45
- <ProjectReference Include="@(PackageInSolution->'$(SmartSolutionDir)\%(SmartPath)' )"/>
57
+ <Exec Command='"$(SigningToolExe)" sign -i $(TargetPath) -c "$(SigningConfiguration)" -n "WiX Toolset" -d "WiX Toolset" -u https://wixtoolset.org/ -r "$(SigningUser)" -s "$(SigningSecret)"'
58
+ WorkingDirectory="$(MSBuildProjectDirectory)" EchoOff="true" />
59
+ </Target>
60
47
- <!-- Remove the package references that are now referenced as projects -->
48
- <PackageReference Remove="@(PackageInSolution->'%(PackageName)' )"/>
49
- </ItemGroup>
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>
66
51
- </When>
52
- </Choose>
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)"'
68
+ WorkingDirectory="$(MSBuildProjectDirectory)" EchoOff="true" />
69
+ </Target>
70
54
- <Import Project="Wix.Build.targets" Condition=" Exists('Wix.Build.targets') And '$(MSBuildProjectExtension)'=='.wixproj' " />
71
+ <Import Project="Directory$(MSBuildProjectExtension).targets" Condition=" Exists('Directory$(MSBuildProjectExtension).targets') " />
72
<Import Project="Custom.Build.targets" Condition=" Exists('Custom.Build.targets') " />
73
</Project>
src/Directory.csproj.props
renamed
src/Directory.vcxproj.props
renamed
+4
-1
@@ -10,6 +10,9 @@
10
<!-- NBGV properties -->
11
<AssemblyCompany>$(Company)</AssemblyCompany>
12
<AssemblyCopyright>$(Copyright)</AssemblyCopyright>
13
+
14
+ <RuntimeIdentifiers>win-x86;win-x64;win-arm64</RuntimeIdentifiers>
15
+ <NuGetTargetMoniker>native,Version=v0.0</NuGetTargetMoniker>
16
</PropertyGroup>
17
18
<PropertyGroup Condition="'$(WindowsTargetPlatformVersion)'=='' AND '$(VisualStudioVersion)'>='15.0'">
@@ -17,7 +20,7 @@
20
</PropertyGroup>
21
22
<PropertyGroup>
20
- <CodeAnalysisRuleSet>$(MSBuildThisFileDirectory)CustomizedNativeRecommendedRules.ruleset</CodeAnalysisRuleSet>
23
+ <CodeAnalysisRuleSet Condition=" Exists('$(MSBuildThisFileDirectory)CustomizedNativeRecommendedRules.ruleset') ">$(MSBuildThisFileDirectory)CustomizedNativeRecommendedRules.ruleset</CodeAnalysisRuleSet>
24
</PropertyGroup>
25
26
<ItemDefinitionGroup>
src/WixToolset.Mba.Core/WixToolset.Mba.Core.csproj
+3
-9
@@ -19,6 +19,7 @@
19
</ItemGroup>
20
21
<PropertyGroup>
22
+ <NuspecBasePath>$(OutputPath)</NuspecBasePath>
23
<NativeFileListPath Condition=" '$(NCrunch)'=='' ">$(MSBuildProjectDir)..\..\build\obj\$(ProjectName)\$(Configuration)\NativeFileList.txt</NativeFileListPath>
24
<NativeFileListPath Condition=" '$(NCrunch)'=='1' ">$(NCrunchOriginalProjectDir)..\..\build\obj\$(ProjectName)\$(Configuration)\NativeFileList.txt</NativeFileListPath>
25
</PropertyGroup>
@@ -27,7 +28,7 @@
28
<MSBuild Projects="..\mbanative\mbanative.vcxproj" Properties="Platform=Win32" Targets="Build;BuiltProjectOutputGroup;ContentFilesProjectOutputGroup;DebugSymbolsProjectOutputGroup">
29
<Output TaskParameter="TargetOutputs" ItemName="_NativeProjectOutput" />
30
</MSBuild>
30
-
31
+
32
<WriteLinesToFile File="$(NativeFileListPath)" Lines="@(_NativeProjectOutput)" Overwrite="true" />
33
34
<ItemGroup>
@@ -55,11 +56,4 @@
56
<FileWrites Include="@(_NCrunchNativeCopied)" />
57
</ItemGroup>
58
</Target>
58
-
59
- <Target Name="SetNuspecProperties" AfterTargets="GetBuildVersion">
60
- <PropertyGroup>
61
- <NuspecBasePath>$(OutputPath)</NuspecBasePath>
62
- <NuspecProperties>Id=$(MSBuildThisFileName);Version=$(BuildVersionSimple);Authors=$(Authors);Copyright=$(Copyright);Description=$(Description);RepositoryCommit=$(SourceRevisionId);RepositoryType=$(RepositoryType);RepositoryUrl=$(PrivateRepositoryUrl)</NuspecProperties>
63
- </PropertyGroup>
64
- </Target>
65
-</Project>
\ No newline at end of file
59
+</Project>
src/balutil/balutil.vcxproj
+1
-5
@@ -39,6 +39,7 @@
39
<PlatformToolset>v142</PlatformToolset>
40
<CharacterSet>MultiByte</CharacterSet>
41
<Description>WiX Toolset Bootstrapper Application Layer native utility library</Description>
42
+ <PackageId>WixToolset.BalUtil</PackageId>
43
</PropertyGroup>
44
45
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
@@ -88,11 +89,6 @@
89
<None Include="packages.config" />
90
</ItemGroup>
91
91
- <Target Name="Pack"
92
- DependsOnTargets="GetBuildVersion">
93
- <Exec Command='nuget pack balutil.nuspec -OutputDirectory "$(BaseOutputPath)$(Configuration)" -Properties Configuration=$(Configuration);Id=WixToolset.BalUtil;Version="$(BuildVersionSimple)";Authors="$(Authors)";Copyright="$(Copyright)";Description="$(Description)";Title="$(Title)"' />
94
- </Target>
95
-
92
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
93
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
94
<PropertyGroup>
src/bextutil/bextutil.vcxproj
+1
-5
@@ -39,6 +39,7 @@
39
<PlatformToolset>v142</PlatformToolset>
40
<CharacterSet>MultiByte</CharacterSet>
41
<Description>WiX Toolset Bundle Extension native utility library</Description>
42
+ <PackageId>WixToolset.BextUtil</PackageId>
43
</PropertyGroup>
44
45
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
@@ -77,11 +78,6 @@
78
<None Include="packages.config" />
79
</ItemGroup>
80
80
- <Target Name="Pack"
81
- DependsOnTargets="GetBuildVersion">
82
- <Exec Command='nuget pack bextutil.nuspec -OutputDirectory "$(BaseOutputPath)$(Configuration)" -Properties Configuration=$(Configuration);Id=WixToolset.BextUtil;Version="$(BuildVersionSimple)";Authors="$(Authors)";Copyright="$(Copyright)";Description="$(Description)";Title="$(Title)"' />
83
- </Target>
84
-
81
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
82
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
83
<PropertyGroup>
src/test/BalUtilUnitTest/BalUtilUnitTest.vcxproj
+1
@@ -24,6 +24,7 @@
24
<ConfigurationType>DynamicLibrary</ConfigurationType>
25
<CharacterSet>Unicode</CharacterSet>
26
<CLRSupport>true</CLRSupport>
27
+ <SignOutput>false</SignOutput>
28
</PropertyGroup>
29
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
30
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
src/test/BextUtilUnitTest/BextUtilUnitTest.vcxproj
+1
@@ -24,6 +24,7 @@
24
<ConfigurationType>DynamicLibrary</ConfigurationType>
25
<CharacterSet>Unicode</CharacterSet>
26
<CLRSupport>true</CLRSupport>
27
+ <SignOutput>false</SignOutput>
28
</PropertyGroup>
29
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
30
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
src/test/WixToolsetTest.Mba.Core/WixToolsetTest.Mba.Core.csproj
+1
@@ -6,6 +6,7 @@
6
<TargetFramework>netcoreapp3.1</TargetFramework>
7
<IsPackable>false</IsPackable>
8
<RuntimeIdentifier>win-x86</RuntimeIdentifier>
9
+ <SignOutput>false</SignOutput>
10
</PropertyGroup>
11
12
<ItemGroup>