Führen Sie die Visual Studio-Befehlszeilentools in Windows Powershell aus


10

In cmd.exe würde ich einfach laufen

%VS80COMNTOOLS%\vsvars32.bat

zum Einrichten der Umgebung zum Ausführen der Visual Studio-Befehlszeilentools (z. B. cl, link, mt usw.). Ich frage mich, wie ich die Umgebung für die Ausführung dieser Tools in Powershell einrichten kann. Sicher, es ist möglich, Batch-Dateien mit auszuführen

start-process $env:vs80comntools\vsvars32.bat

Aber dann wäre die Umgebung verschwunden, wenn der Prozess beendet wird. Ich habe bereits einige Experimente mit System.Diagnostics.StartProcessInfo durchgeführt, dh

$proc = start-process $env:vs80comntools\vsvars32.bat -passthru
$procInfo = proc.StartInfo

und dann die Umgebung abrufen, $procInfo.EnvironmentVariablesaber das funktioniert auch nicht.

Gibt es andere Möglichkeiten, die Umgebung in Powershell einzurichten?

Antworten:



2

PSCX Import-VisualStudioVarsist ein großes Skript, das versucht zu duplizieren, was vsvars32.batfunktioniert. Das Problem dabei ist, dass die Synchronisierung Aufwand erfordert und eine Fehlerquelle sein kann.

Ich verlasse mich lieber auf vsvars32.bat, um das zu tun, was es tut, und importiere die Umgebung. vars. in PowerShell. Ich mache das mit Invoke-CmdScript.ps1 .


Danke für die Antwort. Ich habe bereits in Betracht gezogen, dass Import-VisualStudioVar die Ausführung von vsvars32.bat mehr oder weniger verspottet, anstatt sie tatsächlich auszuführen. Angesichts der Tatsache, dass vsvars32.bat für eine bestimmte Version von VS ziemlich stabil ist, glaube ich jedoch nicht, dass es ein echtes Problem gibt, die Ergebnisse beider Optionen synchron zu halten. Trotzdem werde ich Ihren Vorschlag ausprobieren.
Uwe Honekamp

0

Eine weitere Option aus der PowerShell-Galerie: posh-vs Stellt Visual Studio-Befehlszeilentools in PowerShell zur Verfügung. Unterstützt Visual Studio 2017 und 2015.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.