開発環境にインストールされている Visual Studio のバージョンをコマンドラインで取得する
Visual Studio 2017 以降のバージョンでは、同一マシンに安全に Visual Studio を複数バージョンインストールことができるようになった一方で、どの場所にどの Visual Studio がインストールされているのかが把握しにくいという新しい管理上の問題を生んでいる。その問題を解決するために提供されているツールが vswhere
コマンドである。
vswhere
コマンドは、Visual Studio Installer の中にバンドルされているが、GitHub からも入手することができる。
vswhere
を使ってインストールされているバージョンを取得する例を以下に示す。
(& $(Join-Path ${Env:ProgramFiles(x86)} 'Microsoft Visual Studio\Installer\vswhere.exe') -prerelease -format json | ConvertFrom-Json).catalog.productDisplayVersion
実行結果の例を以下に示す。
16.11.5 17.0.0 Preview 6.0
なお、PowerShell で ConvertFrom-Json で変換しなくても -property
オプションを指定すれば、指定した情報だけを取得できる。
& $(Join-Path ${Env:ProgramFiles(x86)} 'Microsoft Visual Studio\Installer\vswhere.exe') -prerelease -property catalog_productDisplayVersion
ただし、この方法の場合、複数のプロパティを取得したいということはできない (そういう "仕様" のようだ)。
補足
上記の例で、-prelease
オプションを付けている理由は、vswhere は既定でリリース済みのプロダクトのみを表示するという仕様になっているためである (未リリースである Visual Studio Preview が表示されない)。
さらに混乱しやすいのが -all
オプションで、このオプションは Preview リリースは含まない。-all
オプションを付けると不完全なインストールになっているものであっても表示するという意味合いとなる。