ここ最近実施したVS Code の設定変更

TL;DR

  1. Copilot Chat → ⌘Enter 送信、Enter は改行
  2. C# Dev Kit の自動 Runtime ダウンロードは無効化

Copilot Chat の送信キー変更

  • Keyboard Shortcuts で workbench.action.chat.submit を ⌘Enter に割当、Enter 割当を削除

  • JSON 設定例:

    {
      "key": "cmd+enter",
      "command": "workbench.action.chat.submit",
      "when": "inChatInput && chatInputHasText && !chatSessionRequestInProgress"
    },
    {
      "key": "enter",
      "command": "-workbench.action.chat.submit",
      "when": "inChatInput"
    }

C# Dev Kit の Runtime 自動インストール無効化

背景(短縮版)

  • Microsoft は新機能展開とサポート簡素化のため Dev Kit 重視(OmniSharp から投資シフト)
  • Dev Kit は必要な .NET Runtime を一度だけ拡張配下へダウンロード(例: ~/.vscode/extensions/ms-dotnettools.vscode-dotnet-runtime-*/.dotnet/
  • これは主に解析/補完用 runtime で、あなたの global.json の SDK と別物になり得る
  • 統合ターミナルの dotnet build は PATH 上の dotnet を使用し、内部プロセス(補完/テスト探索など)は拡張内 runtime を使うため警告や補完がズレることがある

無効化手順

  1. Runtime 拡張を無効化

    code --disable-extension ms-dotnettools.vscode-dotnet-runtime

bin/obj のデザインタイム生成物が原因で build が失敗するケース

Dev Kit (設計時ビルド / 言語サービス) が内部 runtime で走った結果、objbin別 SDK / 別 TFM 前提の中間生成物 を残し、その後あなたがターミナルで通常の dotnet build(PATH 上の SDK)を実行すると差異でエラーになることがあります。

代表的な症状 / エラー例:

症状 代表的なエラーコード
期待しない TFM で生成物がある (net9.0 フォルダ等) NETSDK1045, NETSDK1139
参照 DLL が見つからない CS0006
生成コード中の型が存在しない CS0246 / CS0103
NuGet 解決の不整合 NU1105, NU1201
重複属性 (自動生成 AssemblyInfo と手書き競合) CS0579

最小対処フロー(安全版):

  1. VS Code を一旦閉じる(ファイルロック/再生成を止める)
  2. ルートでクリーン: dotnet clean
  3. 中間生成物を完全削除:
find . -type d \( -name bin -o -name obj \) -prune -exec rm -rf {} +
  1. global.json の SDK が期待通りか確認し、その SDK をロードしたシェルから code .
  2. 再度 dotnet restore && dotnet build
この記事をシェア

弊社では、一緒に会社を面白くしてくれる仲間を募集しています。
お気軽にお問い合わせください!