Created
April 26, 2019 13:30
-
-
Save RichieBzzzt/35bc3290bd4d7e781c8ee24bf42588fe to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function Invoke-MsBuildSSDT { | |
<# | |
.SYNOPSIS | |
Build a datbase project/solution using Microsoft.Data.Tools.MSBuild | |
.DESCRIPTION | |
Using MSBUild, the database project/solution is comiled using Microsoft.Data.Tools.MSBuild. This can be downloaded by using Install-MicrosoftDataToolsMSBuild | |
.PARAMETER DatabaseSolutionFilePath | |
Mandatory - Filepath to the sln/sqlproj file. | |
.PARAMETER DataToolsFilePath | |
Mandatory - Location of the Micorosft.Data.Tools.MSBuild. Required for SSDTPath and ExtensionsReferences. | |
.PARAMETER MSBuildVersionNumber | |
Optional - Specify if using version 14 or 15. Will default to 15 if left blank. Can be installed by using Install-VSBuildTools2017. | |
.INPUTS | |
N/A | |
.OUTPUTS | |
N/A | |
.EXAMPLE | |
$sqlproj = $PSSCriptRoot\solution.sln | |
$workingFolder = $PSScriptRoot | |
New-Item -ItemType Directory -Force -Path $WorkingFolder | |
$msBuildDataTools = Join-Path $WorkingFolder "\Microsoft.Data.Tools.Msbuild\lib\net46" | |
if ((Test-Path $msBuildDataTools) -eq $false) { | |
Install-MicrosoftDataToolsMSBuild -WorkingFolder $workingFolder | |
} | |
if ((Test-Path $msBuildDataTools) -eq $false) { | |
Write-Output "Oh! It looks like MSBuildDataTools did not download." | |
} | |
Invoke-MsBuildSSDT -DatabaseSolutionFilePath $sqlproj -DataToolsFilePath $msBuildDataTools | |
if ($LASTEXITCODE -ne 0){ | |
Throw | |
} | |
.NOTES | |
N/A | |
#> | |
param ( [string] $DatabaseSolutionFilePath | |
, [string] $DataToolsFilePath | |
, [string]$MSBuildVersionNumber) | |
if ([string]::IsNullOrEmpty($MSBuildVersionNumber)) { | |
$MSBuildVersionNumber = "15.0" | |
} | |
if ($MSBuildVersionNumber -eq "15.0") { | |
$filepath = "C:\Program Files (x86)\Microsoft Visual Studio\2017" | |
$folders = Get-ChildItem $filepath | |
$MsBuildInstalled = 0 | |
foreach ($folder in $folders) { | |
$MsbuildPath = Join-Path $filepath "$folder\MSBuild\15.0\Bin" | |
if ((Test-Path $MsbuildPath) -eq $true) { | |
Write-Host "MsBuild found!" -ForegroundColor Green -BackgroundColor Yellow | |
$MsBuild = Join-Path $MsbuildPath "msbuild.exe" | |
$MsBuildInstalled = 1 | |
break | |
} | |
} | |
if ($MsBuildInstalled -eq 0) { | |
Write-Error "Install Visual Studio Tools 2017 MSBuild Tools to continue!" | |
Throw | |
} | |
} | |
else { | |
$msbuild = "C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe" | |
} | |
if (-not (Test-Path $msbuild)) { | |
Write-Error "No MSBuild installed. Install Build Tools using 'Install-VsBuildTools2017', set -MSBuildVersionNumber to 15.0 and try again!" | |
Throw | |
} | |
$dacPacRootPath = "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE" | |
$arg1 = "/p:tv=$MSBuildVersionNumber" | |
$arg2 = "/p:SSDTPath=$DataToolsFilePath" | |
$arg3 = "/p:SQLDBExtensionsRefPath=$DataToolsFilePath" | |
$arg4 = "/p:Configuration=Debug" | |
$arg5 = "/p:dacPacRootPath=$dacPacRootPath" | |
Write-Host $msbuild $DatabaseSolutionFilePath $arg1 $arg2 $arg3 $arg4 $arg5 -ForegroundColor White -BackgroundColor DarkGreen | |
& $msbuild $DatabaseSolutionFilePath $arg1 $arg2 $arg3 $arg4 2>&1 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment