Skip to content

Commit 06b8b89

Browse files
committed
build: Build projects both signed and unsigned
* Add build-signed.msbuild and bat file * Rename all.msbuild to build-all.msbuild for consistency * Rewrite msbuild files to Clean, Build and Rebuild targets * Update build scripts * build.bat takes optional .pfx key file for signing Notes: * Moves binaries to Src-signed and Src-unsigned dirs after each build * Only builds signed binaries after tests have passed * If no key file is specified, signed binaries are skipped * Only build server has .pfx key file
1 parent c362cf3 commit 06b8b89

File tree

7 files changed

+168
-30
lines changed

7 files changed

+168
-30
lines changed

Build/build-all-debug.bat

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,13 @@
1-
SET ROOT=%~dp0..
2-
"C:\Program Files (x86)\MSBuild\14.0\Bin\MsBuild.exe" %ROOT%\Build\all.msbuild /verbosity:normal /p:Configuration=Debug /p:Platform="AnyCPU" /target:CleanAndBuild /p:RestorePackages=false
1+
@echo off
2+
set ROOT=%~dp0..
3+
set SrcDir="%ROOT%\Artifacts\Bin\Src"
4+
set SrcUnsignedDir="%ROOT%\Artifacts\Bin\Src-unsigned"
5+
6+
echo Build unsigned binaries.
7+
"C:\Program Files (x86)\MSBuild\14.0\Bin\MsBuild.exe" %ROOT%\Build\build-all.msbuild /verbosity:normal /p:Configuration=Debug /target:Clean;Rebuild /p:RestorePackages=false
38
if %errorlevel% neq 0 exit /b %errorlevel%
9+
10+
echo Move unsigned binaries to: %SrcUnsignedDir%
11+
if exist %SrcUnsignedDir% rmdir /Q /S %SrcUnsignedDir%
12+
ren %SrcDir% "Src-unsigned"
13+
if %errorlevel% neq 0 exit /b %errorlevel%

Build/build-all-release.bat

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
@echo off
2-
set StrongNameSignFile=%1
32
set ROOT=%~dp0..
4-
if exist %StrongNameSignFile% (
5-
echo "BUILD WITH STRONG NAME SIGNING USING %StrongNameSignFile%"
6-
pause
7-
"C:\Program Files (x86)\MSBuild\14.0\Bin\MsBuild.exe" %ROOT%\Build\all.msbuild /verbosity:normal /p:Configuration=Release /p:Platform="AnyCPU" /target:CleanAndBuild /p:RestorePackages=false /p:SignAssembly=true /p:AssemblyOriginatorKeyFile=%StrongNameSignFile%
8-
) else (
9-
echo "NO STRONG NAME SIGNING FILE"
10-
pause
11-
"C:\Program Files (x86)\MSBuild\14.0\Bin\MsBuild.exe" %ROOT%\Build\all.msbuild /verbosity:normal /p:Configuration=Release /p:Platform="AnyCPU" /target:CleanAndBuild /p:RestorePackages=false
12-
)
3+
set SrcDir="%ROOT%\Artifacts\Bin\Src"
4+
set SrcUnsignedDir="%ROOT%\Artifacts\Bin\Src-unsigned"
5+
6+
echo Build unsigned binaries.
7+
"C:\Program Files (x86)\MSBuild\14.0\Bin\MsBuild.exe" %ROOT%\Build\build-all.msbuild /verbosity:normal /p:Configuration=Release /target:Clean;Rebuild /p:RestorePackages=false
138
if %errorlevel% neq 0 exit /b %errorlevel%
9+
10+
echo Move unsigned binaries to: %SrcUnsignedDir%
11+
if exist %SrcUnsignedDir% rmdir /Q /S %SrcUnsignedDir%
12+
ren %SrcDir% "Src-unsigned"
13+
if %errorlevel% neq 0 exit /b %errorlevel%

Build/all.msbuild renamed to Build/build-all.msbuild

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,29 +6,37 @@
66
<Configuration>Release</Configuration>
77
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">14.0</VisualStudioVersion>
88
<RootPath>$(MSBuildProjectDirectory)\..\</RootPath>
9-
</PropertyGroup>
10-
11-
<Target Name="CleanAndBuild" DependsOnTargets="Clean;CompileProjects" />
12-
13-
<Target Name="Clean">
14-
<MSBuild Projects="@(AllProjects)" Targets="Clean" />
15-
<RemoveDir Directories="$(SrcBinPath)" />
16-
</Target>
17-
18-
<Target Name="CompileProjects">
19-
<MSBuild Projects="
9+
<Projects>
2010
$(RootPath)\UnitsNet\UnitsNet.Net35.csproj;
2111
$(RootPath)\UnitsNet\UnitsNet.Portable40.csproj;
2212
$(RootPath)\UnitsNet\UnitsNet.NetStandard10.csproj;
2313
$(RootPath)\UnitsNet\UnitsNet.WindowsRuntimeComponent.csproj;
2414
$(RootPath)\UnitsNet.Serialization.JsonNet\UnitsNet.Serialization.JsonNet.Net35.csproj;
2515
$(RootPath)\UnitsNet.Tests\UnitsNet.Tests.csproj;
2616
$(RootPath)\UnitsNet.Tests\UnitsNet.WindowsRuntimeComponent.Tests.csproj;
27-
$(RootPath)\UnitsNet.Serialization.JsonNet.Tests\UnitsNet.Serialization.JsonNet.Tests.csproj"
17+
$(RootPath)\UnitsNet.Serialization.JsonNet.Tests\UnitsNet.Serialization.JsonNet.Tests.csproj
18+
</Projects>
19+
</PropertyGroup>
20+
21+
<Target Name="Clean">
22+
<MSBuild
23+
Projects="$(Projects)"
24+
Targets="Clean" />
25+
</Target>
26+
27+
<Target Name="Build">
28+
<MSBuild
29+
Projects="$(Projects)"
30+
Targets="Build"
31+
Properties="Platform=$(Platform);Configuration=$(Configuration);VisualStudioVersion=$(VisualStudioVersion);SkipGenerateUnits=True" />
32+
</Target>
2833

29-
Properties="Platform=$(Platform);Configuration=$(Configuration);VisualStudioVersion=$(VisualStudioVersion)"
30-
Targets="Build">
31-
</MSBuild>
34+
<Target Name="Rebuild">
35+
<MSBuild
36+
Projects="$(Projects)"
37+
Targets="Rebuild"
38+
Properties="Platform=$(Platform);Configuration=$(Configuration);VisualStudioVersion=$(VisualStudioVersion);SkipGenerateUnits=True"
39+
/>
3240
</Target>
3341

34-
</Project>
42+
</Project>

Build/build-signed-release.bat

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
@echo off
2+
set StrongNameSignFile="%1"
3+
set errorlevel=0
4+
set ROOT=%~dp0..
5+
set SrcDir="%ROOT%\Artifacts\Bin\Src"
6+
set SrcSignedDir="%ROOT%\Artifacts\Bin\Src-signed"
7+
8+
if exist "%StrongNameSignFile%" (
9+
echo Build signed binaries with key: %StrongNameSignFile%
10+
"C:\Program Files (x86)\MSBuild\14.0\Bin\MsBuild.exe" %ROOT%\Build\build-signed.msbuild /verbosity:Normal /p:Configuration=Release /target:Clean;Rebuild /p:RestorePackages=false /p:SignAssembly=true /p:AssemblyOriginatorKeyFile=%StrongNameSignFile%
11+
12+
if %errorlevel% neq 0 (
13+
echo Error: %errorlevel%
14+
exit /b %errorlevel%
15+
)
16+
17+
echo %SrcDir%
18+
echo Move signed binaries to: %SrcSignedDir%
19+
@echo on
20+
if exist %SrcSignedDir% rmdir /Q /S %SrcSignedDir%
21+
ren %SrcDir% "Src-signed"
22+
@echo off
23+
) else (
24+
echo NO STRONG NAME SIGNING FILE: %StrongNameSignFile%
25+
)

Build/build-signed.msbuild

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="CompileProjects" ToolsVersion="14.0">
3+
4+
<PropertyGroup>
5+
<Platform>AnyCPU</Platform>
6+
<Configuration>Release</Configuration>
7+
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">14.0</VisualStudioVersion>
8+
<RootPath>$(MSBuildProjectDirectory)\..\</RootPath>
9+
<Projects>
10+
$(RootPath)\UnitsNet\UnitsNet.Net35.csproj;
11+
$(RootPath)\UnitsNet\UnitsNet.Portable40.csproj;
12+
$(RootPath)\UnitsNet\UnitsNet.NetStandard10.csproj;
13+
$(RootPath)\UnitsNet\UnitsNet.WindowsRuntimeComponent.csproj;
14+
$(RootPath)\UnitsNet.Serialization.JsonNet\UnitsNet.Serialization.JsonNet.Net35.csproj
15+
</Projects>
16+
</PropertyGroup>
17+
18+
<Target Name="Clean">
19+
<MSBuild
20+
Projects="$(Projects)"
21+
Targets="Clean" />
22+
</Target>
23+
24+
<Target Name="Build">
25+
<MSBuild
26+
Projects="$(Projects)"
27+
Targets="Build"
28+
Properties="Platform=$(Platform);Configuration=$(Configuration);VisualStudioVersion=$(VisualStudioVersion);SkipGenerateUnits=True" />
29+
</Target>
30+
31+
<Target Name="Rebuild">
32+
<MSBuild
33+
Projects="$(Projects)"
34+
Targets="Rebuild"
35+
Properties="Platform=$(Platform);Configuration=$(Configuration);VisualStudioVersion=$(VisualStudioVersion);SkipGenerateUnits=True"
36+
/>
37+
</Target>
38+
39+
</Project>

Build/build.bat

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,53 @@
11
@echo off
2-
set StrongNameSignFile=%1
2+
rem This file builds everything and is run on the build server as part of
3+
rem building, testing and packing nugets for all master commits and pull requests.
4+
5+
rem Publishing nugets is handled by nuget-publish.bat and run by the build server
6+
rem on the master branch.
7+
8+
rem Optional strong name signing .pfx key file to produce signed binaries and nugets.
9+
set StrongNameSignFile="%1"
10+
311
set ROOT=%~dp0..
412

13+
if exist %StrongNameSignFile% (
14+
echo Using strong name signing key file: %StrongNameSignFile%
15+
) else (
16+
echo No strong name signing key file specified. Will only build unsigned binaries and nugets.
17+
)
18+
519
if exist %ROOT%\Artifacts rmdir /Q /S %ROOT%\Artifacts
620

21+
rem Regenerate all source code and test stubs before building
22+
rem since there is no guarantee that merged pull requests
23+
rem have properly regenerated code.
24+
call %ROOT%\GenerateUnits.bat
25+
if %errorlevel% neq 0 exit /b %errorlevel%
26+
27+
rem Update AsseemblyInfo.cs versions from .nuspec files
728
call powershell -NoProfile %ROOT%\Build\UpdateAssemblyInfo.ps1
829
if %errorlevel% neq 0 exit /b %errorlevel%
930

31+
rem Restore nugets
1032
call %ROOT%\Build\nuget-restore.bat
1133
if %errorlevel% neq 0 exit /b %errorlevel%
1234

13-
call %ROOT%\Build\build-all-release.bat "%StrongNameSignFile%"
35+
rem Build source and tests
36+
call %ROOT%\Build\build-all-release.bat
1437
if %errorlevel% neq 0 exit /b %errorlevel%
1538

39+
rem Run all tests
1640
call %ROOT%\Build\run-tests.bat
1741
if %errorlevel% neq 0 exit /b %errorlevel%
1842

43+
rem Only build signed binaries if tests pass
44+
call %ROOT%\Build\build-signed-release.bat %StrongNameSignFile%
45+
if %errorlevel% neq 0 exit /b %errorlevel%
46+
47+
rem Pack nugets for both signed and unsigned binaries
1948
call %ROOT%\Build\pack-nuget.bat
2049
if %errorlevel% neq 0 exit /b %errorlevel%
2150

51+
rem Create a zip bundle of everything, becomes available in TeamCity for download
2252
call %ROOT%\Build\zip-artifacts.bat
2353
if %errorlevel% neq 0 exit /b %errorlevel%

Build/msbuild-signed.msbuild

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="CompileProjects" ToolsVersion="14.0">
3+
4+
<PropertyGroup>
5+
<Platform>AnyCPU</Platform>
6+
<Configuration>Release</Configuration>
7+
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">14.0</VisualStudioVersion>
8+
<RootPath>$(MSBuildProjectDirectory)\..\</RootPath>
9+
</PropertyGroup>
10+
11+
<Target Name="CleanAndBuild" DependsOnTargets="Clean;Build" />
12+
13+
<Target Name="Clean">
14+
<MSBuild Projects="@(AllProjects)" Targets="Clean" />
15+
</Target>
16+
17+
<Target Name="Build">
18+
<MSBuild Projects="
19+
$(RootPath)\UnitsNet\UnitsNet.Net35.csproj"
20+
21+
Properties="Platform=$(Platform);Configuration=$(Configuration);VisualStudioVersion=$(VisualStudioVersion);SkipGenerateUnits=True"
22+
Targets="Build">
23+
</MSBuild>
24+
</Target>
25+
26+
</Project>

0 commit comments

Comments
 (0)