Visual Studio の「開発者コマンドプロンプト」(Developer Command Prompt)は cl.exe
等のツールを使用できるよう環境変数が設定されたコマンドプロンプトです。スタートメニューから立ち上げるのが基本ですが、VS の統合ターミナルから実行できるほか、Windows Terminal のプロファイルにも自動で取り込まれます。VS を立ち上げるまでもない作業や、環境変数設定が必要な時(CI から cl.exe
等を呼び出すケース等)に便利です1。
一方、Microsoft 公式で C/C++ for Visual Studio Code が提供されるなど、VSCode に開発環境を集約させることも現実的になってきました。そうなると VSCode の統合ターミナルで開発者コマンドプロンプトが必要な作業も終えてしまいたいところですが、公式ガイドでは別ウィンドウでの起動やタスク設定をする方法しか紹介されていません。どうして。
ターミナル設定を編集して開発者コマンドプロンプトを追加する
仕方がないのでターミナル設定を編集して手動で開発者コマンドプロンプトを追加してみましょう。
[ファイル]
-[ユーザー設定]
-[設定]
を開き、terminal.integrated.profiles.windows
と検索します。GUI 上からは変更できない項目なので、settings.json で編集
を押下します。
既に設定済みのプロファイル設定があるので、下記の Developer Command Prompt
以下を追記します:
"terminal.integrated.profiles.windows": {
// 追加
"Developer Command Prompt": {
"path": [
"${env:windir}\\Sysnative\\cmd.exe",
"${env:windir}\\System32\\cmd.exe"
],
"args": [
"/k",
"C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\Community\\Common7\\Tools\\VsDevCmd.bat"
],
"overrideName": true
}
}
デフォルトで設定されているコマンドプロンプト用のプロファイルをベースに、引数として VsDevCmd.bat
へのパスを渡してあげたものになります。プロファイルでは他にもアイコンやテーマカラーが設定可能ですので、必要に応じて変更してください。
ターミナル設定を編集して開発者用 PowerShell を追加する
イマドキだと開発者コマンドプロンプトより開発者用 PowerShell の方がお好みの方もいらっしゃるでしょう。その場合も同様に settings.json
で設定できます:
"terminal.integrated.profiles.windows": {
// 追加
"Developer PowerShell": {
"source": "PowerShell",
"args": [
"-NoExit",
"-Command",
"&{Import-Module \"C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\Community\\Common7\\Tools\\Microsoft.VisualStudio.DevShell.dll\"; Enter-VsDevShell <instanceId> -SkipAutomaticLocation"
],
"overrideName": true
},
}
こちらは Microsoft.VisualStudio.DevShell.dll
に含まれる Enter-VsDevShell
コマンドレットを呼び出したものです。注意事項として、<instanceId>
は環境で固有のインスタンス ID に置き換える必要があります。インスタンス ID は以下の Powershell スクリプトで取得可能です:
& "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" -format json | ConvertFrom-Json | Format-Table -Property instanceId,displayName
instanceId displayName
---------- -----------
415d**** Visual Studio Community 2022
7e9a**** Visual Studio Community 2019
このように標準出力の JSON を ConvertFrom-Json コマンドレットでオブジェクト化すると、PowerShell の強力な機能を使用できます。せっかく PowerShell を選ぶならコマンドプロンプトにはないメリットも享受したいですね。
統合ターミナルのデフォルトプロファイルを変更する
ついでなので統合ターミナルのデフォルトプロファイルも変更してみましょう。terminal.integrated.defaultProfile.windows
で追加したプロファイル名を指定するだけです。この項目は GUI 上からも変更可能です2:
{
"terminal.integrated.defaultProfile.windows": "Developer PowerShell"
}
このとき、グローバル設定を変更してもいいですが、個人的には特定ワークスペース(開発者向けのコマンドラインシェルを使用したいプロジェクト)の設定を変更しておく使い方がおすすめです。
なおデフォルトプロファイルとして設定すると、左ナビゲーションのエクスプローラから「統合ターミナルで開く」をした場合にも当該プロファイルで開いてくれるので便利です。
参考リンク
- Visual Studio 開発者コマンド プロンプトと開発者用 PowerShell
- VS Code use VS Developer prompt as integrated Shell
- Add profile generators for Visual Studio #7774
- Configure VS Code for Microsoft C++
- cmd | Microsoft Learn
- VSCodeのターミナル/プロファイルの設定の詳細
- Terminal Profiles
- Developer Powershell for VS 2019をWindows Terminalから開く
- Visual Studio インスタンスの検出および管理用のツール
-
ちなみに GitHub Actions から開発者コマンドプロンプトを実行したい場合は Enable Developer Command Prompt アクションを使用します。 ↩
-
プロファイル名に半角スペースを含むとデフォルトプロファイルに指定できないという情報もありますが、手元の環境では再現しませんでした。 ↩