Skip to content

Instantly share code, notes, and snippets.

@RichieBzzzt
Created October 2, 2018 09:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save RichieBzzzt/e5ad198dbbc0656a3c82faef9f79340d to your computer and use it in GitHub Desktop.
Save RichieBzzzt/e5ad198dbbc0656a3c82faef9f79340d to your computer and use it in GitHub Desktop.
function Install-MicrosoftDataToolsMSBuild {
[cmdletbinding()]
param (
[parameter(Mandatory)]
[string] $WorkingFolder,
[string] $DataToolsMsBuildPackageVersion,
[string] $NuGetPath
)
Write-Verbose "Verbose Folder (with Verbose) : $WorkingFolder"
Write-Verbose "DataToolsVersion : $DataToolsMsBuildPackageVersion"
Write-Warning "If DataToolsVersion is blank latest will be used"
if ($PSBoundParameters.ContainsKey('NuGetPath') -eq $false) {
$NuGetExe = Install-NuGet -WorkingFolder $WorkingFolder
}
else {
Write-Verbose "Skipping Nuget download..." -Verbose
$NuGetExe = Join-Path $NuGetPath "nuget.exe"
}
$TestDotNetVersion = Test-NetInstalled -DotNetVersion "4.6.1"
Write-Host ".NET Version is $($TestDotNetVersion.DotNetVersion), DWORD Value is $($TestDotNetVersion.DWORD) and Required Version is $($TestDotNetVersion.RequiredVersion)" -ForegroundColor White -BackgroundColor DarkMagenta
if ($TestDotNetVersion.DWORD -le 394254) {
Throw "Need to install .NET 4.6.1 at least!"
}
$nugetInstallMsbuild = "&$NugetExe install Microsoft.Data.Tools.Msbuild -ExcludeVersion -OutputDirectory $WorkingFolder"
if ($DataToolsMsBuildPackageVersion) {
if ($DataToolsMsBuildPackageVersion -lt "10.0.61026") {
Throw "Lower versions than 10.0.61026 will NOT work with Publish-DatabaseDeployment. For more information, read the post https://blogs.msdn.microsoft.com/ssdt/2016/10/20/sql-server-data-tools-16-5-release/"
}
$nugetInstallMsbuild += " -version '$DataToolsMsBuildPackageVersion'"
}
Write-Host $nugetInstallMsbuild -BackgroundColor White -ForegroundColor DarkGreen
$execNuget = Invoke-Expression $nugetInstallMsbuild 2>&1
Write-Host $execNuget
$SSDTMSbuildFolderNet46 = "$WorkingFolder\Microsoft.Data.Tools.Msbuild\lib\net46"
if (-not (Test-Path $SSDTMSbuildFolderNet46)) {
$SSDTMSbuildFolderNet40 = "$WorkingFolder\Microsoft.Data.Tools.Msbuild\lib\net40"
if (-not (Test-Path $SSDTMSbuildFolderNet40)) {
Throw "It appears that the nuget install hasn't worked, check output above to see whats going on"
}
}
if (Test-Path $SSDTMSbuildFolderNet46) {
return $SSDTMSbuildFolderNet46
}
elseif (Test-Path $SSDTMSbuildFolderNet40) {
return $SSDTMSbuildFolderNet40
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment