Les prises en charge
VS2017 de l'installation d'un moteur interop API qui permet d'interroger les informations sur l'instance(s) de VS2017 sont installés. Il y a un package NuGet , et encore un exemple de la façon de requête, y compris le chemin d'installation. Pour la consommation d'un lot ou d'une PS fichier, vous pourriez juste réécrire l'exemple d'application et de l'appeler à partir de votre script pour afficher les informations dont vous avez besoin.
La non prise en charge de manière
Le VS moteur d'installation tient un magasin de données en vertu de l' %ProgramData%\Microsoft\VisualStudio\Packages\_Instances
. Il y aura un dossier pour chaque instance de VS2017, et à l'intérieur de ce dossier est un state.json
le fichier qui contient des informations sur l'installation, y compris le chemin d'installation.
Puisque vous avez besoin d'extraire les infos de la .fichier json, vous avez la possibilité soit de créer une application que vous appelez à partir de votre fichier de script, ou venir avec une logique d'analyse directement dans votre script. Ce sera évidemment fragile que le JSON schema ou l'emplacement du fichier peut changer.
La force brute de la méthode
En supposant que vous utilisez le chemin d'installation par défaut, vous pouvez simplement recherche de manière récursive pour msbuild.exe en vertu de l' %ProgramFiles(x86)%\Microsoft Visual Studio\
(il semble qu'il y aura 32-bit et 64-bit msbuild.exe pour chaque VS exemple). Ce serait probablement le plus facile à faire dans votre fichier de script, mais il compte sur le chemin d'installation par défaut (ou quel que soit codé en dur chemin d'accès que vous souhaitez rechercher en vertu de l').
Changer votre environnement de dev exigences
La dernière chose que vous pourriez faire, c'est d'exiger que les devs utilisent (ou en quelque sorte appeler) l' vsdevcmd.bat
à utiliser le VS environnement de dev. Cela permettra d'obtenir MSBuild, et en plus de tous les autres outils de la VS environnement, sur leur %PATH%. C'est une exigence sur votre équipe, mais ce sera toujours officiellement prise en charge moyen de trouver msbuild.exe.