2017-02-24 9 views
3

VSインストールのリストを調べ、インストールされている最高のバージョンを判断するPowerShellスクリプトがあります。その後、そのバージョンのInstallDirを使用して、それを使用してさまざまなコマンドにアクセスします。インストールされたVisual Studioのパスを2017に決定

まだまだは、より低いバージョンのを使用します。

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場所)を決定するための最良の方法は何ですか?私が見ることができるものから、

答えて

7

、のSxS \ VS7オプションを使用します。

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\VisualStudio\SxS\VS7 

それは、Visual Studioにあなたのルートパスを与える必要があります:あなたが軌道に乗る必要があります

enter image description here

を。あなたはVS2017の+のインストールを検出するためのPSモジュールがあるhttps://github.com/microsoft/vssetup.powershellを、チェックアウト、PowerShellを使用しているので

.\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\tf.exe 
+0

これは、VS2017では同じバージョンの複数のインストールが可能であることを指摘しています(たとえば、Community、Pro、Enterpriseをすべて別のパスにインストールすることができます)。場合。 – Jimmy

+1

このアプローチは完全に正しいです。このレジストリエントリは、VS2017の最初のインストールタイプに対応するエントリのみをリストします。まずコミュニティ版をインストールしてからエンタープライズをインストールしたとします。レジストリエントリは、最初にインストールしたときにコミュニティ編集パスを指し示します。今でもコミュニティ版をアンインストールしても、レジストリエントリはコミュニティ版になります。 –

+0

powershellで '15.0'の値を抽出する方法については、この[answer](https://stackoverflow.com/a/43912590/285795)を参照してください。 – OmegaMan

2

tf.exe場所

は、下のシンボリックリンクを使用して格納されます。

それ以外の場合は、VSを検出するためのサポートされている手段であるNuget packageに頼る必要があります。

関連する質問のthis answerも参照してください。上記のPSモジュールの前にありますが、VSを見つけるためのサポートされていない方法がいくつか含まれています。

関連する問題