Exécuter les outils de ligne de commande Visual Studio dans Windows Powershell


10

Dans cmd.exe, je courrais simplement

%VS80COMNTOOLS%\vsvars32.bat

pour configurer l'environnement d'exécution des outils de ligne de commande de Visual Studio (c'est-à-dire cl, link, mt, etc.). Je me demande comment je peux configurer l'environnement pour exécuter ces outils dans le Powershell. Bien sûr, il est possible d'exécuter des fichiers batch en utilisant

start-process $env:vs80comntools\vsvars32.bat

mais alors l'environnement disparaîtrait à la fin du processus. J'ai déjà fait quelques expériences avec System.Diagnostics.StartProcessInfo, c'est-à-dire

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

puis récupérer l'environnement $procInfo.EnvironmentVariablesmais cela ne fonctionne pas non plus.

Existe-t-il d'autres moyens de configurer l'environnement dans Powershell?

Réponses:



2

PSCX Import-VisualStudioVarsest un gros script qui essaie de reproduire ce qui vsvars32.batfait. Le problème est que leur synchronisation nécessite des efforts et peut être une source de bugs.

Je préfère me fier à vsvars32.bat pour faire ce qu'il fait et importer l'env. vars. dans PowerShell. Je fais cela avec Invoke-CmdScript.ps1 .


Merci pour la réponse. J'ai déjà considéré qu'Import-VisualStudioVar se moque plus ou moins de l'exécution de vsvars32.bat au lieu de l'exécuter réellement. Cependant, vu que vsvars32.bat est assez stable pour une version spécifique de VS, je ne pense pas vraiment qu'il y ait un vrai problème de synchronisation des résultats des deux options. Néanmoins, je vais essayer votre proposition.
Uwe Honekamp

0

Une autre option de la galerie PowerShell: posh-vs Rend les outils de ligne de commande Visual Studio disponibles dans PowerShell. Prend en charge Visual Studio 2017 et 2015.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.