我有一个PowerShell脚本,用于查看VS安装列表,并确定安装的最高版本。然后它使用该版本的InstallDir,并使用它来访问各种命令。
然而仍使用较低版本。
从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
位置)的最佳方法是什么?
答案 0 :(得分:8)
从我所看到的,使用SxS \ VS7选项:
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\VisualStudio\SxS\VS7
它应该为您提供Visual Studio的根路径:
这应该让你去。
然后使用符号链接存储tf.exe
位置:
.\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\tf.exe
答案 1 :(得分:2)
由于您使用的是PowerShell,请查看https://github.com/microsoft/vssetup.powershell,它是用于检测VS2017 +安装的PS模块。
否则,您可能需要依赖Nuget package这是检测VS的支持方式。
另请参阅this answer相关问题,该问题早于上面列出的PS模块,但包含一些不受支持的查找VS的方法。
答案 2 :(得分:0)
我确实以此为参考,并以另一种方式提出了解决方案。 我不确定它相对于其他版本的适应性如何,但是它为我带来了成功。它得到了devenv的目录,然后我在TFS的最后添加了额外的内容。显然,如果结构不同,那么我们就被搞砸了。 希望对您有所帮助。
$regKey = "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\devenv.exe"
$visualStudioDir = Get-ItemPropertyValue -Path $regKey -Name "(Default)"
$visualStudioDir = ($visualStudioDir.Replace("devenv.exe","")).replace("`"","")
$tfsPath = 'CommonExtensions\Microsoft\TeamFoundation\Team Explorer\tf.exe'
Set-Alias tf $visualStudioDir$tfsPath
tf workspaces