Add build tasks to the Visual Studio Code workspace file to enable building with MSBuild in VSCode.
This commit is contained in:
62
proj/vscode/Invoke-CmdScript.ps1
Normal file
62
proj/vscode/Invoke-CmdScript.ps1
Normal file
@@ -0,0 +1,62 @@
|
||||
##############################################################################
|
||||
##
|
||||
## Invoke-CmdScript
|
||||
##
|
||||
## From PowerShell Cookbook (O'Reilly)
|
||||
## by Lee Holmes (http://www.leeholmes.com/guide)
|
||||
## <https://powershellcookbook.com/recipe/WqHr/program-retain-changes-to-environment-variables-set-by-a-batch-file>
|
||||
##
|
||||
##############################################################################
|
||||
|
||||
<#
|
||||
|
||||
.SYNOPSIS
|
||||
|
||||
Invoke the specified batch file (and parameters), but also propagate any
|
||||
environment variable changes back to the PowerShell environment that
|
||||
called it.
|
||||
|
||||
.EXAMPLE
|
||||
|
||||
PS > type foo-that-sets-the-FOO-env-variable.cmd
|
||||
@set FOO=%*
|
||||
echo FOO set to %FOO%.
|
||||
|
||||
PS > $env:FOO
|
||||
PS > Invoke-CmdScript "foo-that-sets-the-FOO-env-variable.cmd" Test
|
||||
|
||||
C:\Temp>echo FOO set to Test.
|
||||
FOO set to Test.
|
||||
|
||||
PS > $env:FOO
|
||||
Test
|
||||
|
||||
#>
|
||||
|
||||
param(
|
||||
## The path to the script to run
|
||||
[Parameter(Mandatory = $true)]
|
||||
[string] $Path,
|
||||
|
||||
## The arguments to the script
|
||||
[string] $ArgumentList
|
||||
)
|
||||
|
||||
Set-StrictMode -Version 3
|
||||
|
||||
$tempFile = [IO.Path]::GetTempFileName()
|
||||
|
||||
## Store the output of cmd.exe. We also ask cmd.exe to output
|
||||
## the environment table after the batch file completes
|
||||
cmd /c " `"$Path`" $argumentList && set > `"$tempFile`" "
|
||||
|
||||
## Go through the environment variables in the temp file.
|
||||
## For each of them, set the variable in our local environment.
|
||||
Get-Content $tempFile | Foreach-Object {
|
||||
if($_ -match "^(.*?)=(.*)$")
|
||||
{
|
||||
Set-Content "env:\$($matches[1])" $matches[2]
|
||||
}
|
||||
}
|
||||
|
||||
Remove-Item $tempFile
|
Reference in New Issue
Block a user