我有一个powershell脚本,查看VS安装列表,并确定安装的最高版本。然后它使用该版本的InstallDir,并使用它来访问各种命令。确定2017年安装的Visual Studio路径
它仍然使用较低的版本,但是。
从VS2017开始,似乎注册表项是no longer saved in the same way。我需要更新脚本才能找出2017年的设置。
#Add New Versions to this list when new versions of VS are released
$VsVersionsToDisable = "10.0", "11.0", "12.0", "14.0"
[System.Collections.ArrayList]$VsVersions = $VsVersionsToDisable
#Find the Highest installed VS Version, and use it for the TFS.exe Command.
foreach ($version in $VsVersions | Sort-Object -Descending)
{
$keyPath = "HKCU:\Software\Microsoft\VisualStudio\$version`_Config"
If (Test-Path $keyPath)
{
$aliasPath = Get-ItemProperty -Path $keyPath | Select-Object `
-ExpandProperty InstallDir
$proxyPath = Join-Path $aliasPath "tf.exe"
set-alias proxyTF $proxyPath
}
}
为了避免XY的问题:我们使用这个脚本为用户配置TFS代理设置。它确定最高安装版本,使用它来查找代理,然后使用相同的值遍历配置其代理设置的较低版本。
确定VS2017的安装目录(以及还有tf.exe
位置)的最佳方法是什么?
值得指出的是,VS2017允许多个安装相同的版本(例如,您可以将Community,Pro和Enterprise全部安装到不同的路径),并且我不确定哪个人能够在此获得注册表值案件。 – Jimmy
这种方法是完全正确的,这个注册表项只列出对应于VS2017第一种安装类型的条目。假设你先安装社区版,然后安装企业。注册表项将在您首先安装时继续指向社区版路径。现在,如果你甚至卸载社区版本,注册表入口还是应该社区版本。 –
有关如何在PowerShell中提取'15.0'值的信息,请参见[answer](https://stackoverflow.com/a/43912590/285795)。 – OmegaMan