forked from microsoft/service-fabric-client-dotnet
-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.ps1
87 lines (72 loc) · 3.04 KB
/
build.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
##
# Builds the source code and generates nuget packages. You can optionally just build the source code by opening individual solutions in Visual Studio.
##
param
(
# Configuration to build.
[ValidateSet('Debug', 'Release')]
[string]$Configuration = "Release",
# target to build.
#Options are:
# RebuildAll: Clean, Build all .csproj and Generate Nuget Packages. This is the default option.
# BuildAll: Build all .csproj and Generate Nuget Packages.
# BuildCode: Builds code, doesn't generates nuget packages.
# GeneratePackages: Generates nuget packages, this target doesn't builds code, build must be done using BuildCode target before invoking this target.
[ValidateSet('Rebuildall', 'BuildAll', 'BuildCode', 'GeneratePackages')]
[string]$Target = "RebuildAll",
# msbuild verbosity level.
[ValidateSet('quiet','minimal', 'normal', 'detailed', 'diagnostic')]
[string]$Verbosity = 'minimal',
# path to msbuild
[string]$MSBuildFullPath
)
if($MSBuildFullPath -ne "")
{
if (!(Test-Path $MSBuildFullPath))
{
throw "Unable to find MSBuild at the specified path, run the script again with correct path to msbuild."
}
}
# msbuild path not provided, find msbuild for VS2017
if($MSBuildFullPath -eq "")
{
if (Test-Path "env:\ProgramFiles(x86)")
{
$progFilesPath = ${env:ProgramFiles(x86)}
}
elseif (Test-Path "env:\ProgramFiles")
{
$progFilesPath = ${env:ProgramFiles}
}
$VS2017InstallPath = join-path $progFilesPath "Microsoft Visual Studio\2017"
$versions = 'Community', 'Professional', 'Enterprise'
foreach ($version in $versions)
{
$VS2017VersionPath = join-path $VS2017InstallPath $version
$MSBuildFullPath = join-path $VS2017VersionPath "MSBuild\15.0\Bin\MSBuild.exe"
if (Test-Path $MSBuildFullPath)
{
break
}
}
if (!(Test-Path $MSBuildFullPath))
{
Write-Host "Visual Studio 2017 installation not found in ProgramFiles, trying to find install path from registry."
if(Test-Path -Path HKLM:\SOFTWARE\WOW6432Node)
{
$VS2017VersionPath = Get-ItemProperty (Get-ItemProperty -Path HKLM:\SOFTWARE\WOW6432Node\Microsoft\VisualStudio\SxS\VS7 -Name "15.0")."15.0"
}
else
{
$VS2017VersionPath = Get-ItemProperty (Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\VisualStudio\SxS\VS7 -Name "15.0")."15.0"
}
$MSBuildFullPath = join-path $VS2017VersionPath "MSBuild\15.0\Bin\MSBuild.exe"
}
}
if (!(Test-Path $MSBuildFullPath))
{
throw "Unable to find MSBuild installed on this machine. Please install Visual Studio 2017 or if its installed at non-default location, provide the full ppath to msbuild using -MSBuildFullPath parameter."
}
Write-Output "Using msbuild from $msbuildFullPath"
$msbuildArgs = @("buildall.proj", "/nr:false", "/nologo", "/t:$target", "/verbosity:$verbosity", "/property:RequestedVerbosity=$verbosity", "/property:Configuration=$configuration", $args)
& $msbuildFullPath $msbuildArgs