5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Visual Studio CodeAdvent Calendar 2023

Day 3

VSCode の統合ターミナルで VS の開発者コマンドプロンプトや開発者用 PowerShell を実行する

Last updated at Posted at 2023-11-30

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 で編集 を押下します。

terminal.integrated.profiles.windows.png

既に設定済みのプロファイル設定があるので、下記の Developer Command Prompt 以下を追記します:

settings.json
"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
    }
}

DeveloperCommandPrompt.png

デフォルトで設定されているコマンドプロンプト用のプロファイルをベースに、引数として VsDevCmd.bat へのパスを渡してあげたものになります。プロファイルでは他にもアイコンやテーマカラーが設定可能ですので、必要に応じて変更してください。

ターミナル設定を編集して開発者用 PowerShell を追加する

イマドキだと開発者コマンドプロンプトより開発者用 PowerShell の方がお好みの方もいらっしゃるでしょう。その場合も同様に settings.json で設定できます:

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
    },
}

Developer PowerShell.png

こちらは 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.png

settings.json
{
    "terminal.integrated.defaultProfile.windows": "Developer PowerShell"
}

このとき、グローバル設定を変更してもいいですが、個人的には特定ワークスペース(開発者向けのコマンドラインシェルを使用したいプロジェクト)の設定を変更しておく使い方がおすすめです。

なおデフォルトプロファイルとして設定すると、左ナビゲーションのエクスプローラから「統合ターミナルで開く」をした場合にも当該プロファイルで開いてくれるので便利です。

参考リンク

  1. ちなみに GitHub Actions から開発者コマンドプロンプトを実行したい場合は Enable Developer Command Prompt アクションを使用します。

  2. プロファイル名に半角スペースを含むとデフォルトプロファイルに指定できないという情報もありますが、手元の環境では再現しませんでした。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?