vb.net + .net framework アプリケーションをvscodeでデバッグする
2025-02-18

そのような日もある

ググってもc#の記事しか出てこないけどもちろんvb.netもvscodeでデバッグできるらしい

ビルドにはmsbuildを使用する のでvisual studio(と、必要に応じて追加のコンポーネント)をインストールしてmsbuildへのパス通しておく
デバッグ用の拡張としてC# Dev Kitをインストールしておく
ただし、こいつをインストールしていてもvb.netファイルはデバッグ対象と認識されないぽくてブレークポイントを張れないので、settings.jsonに以下記述

{
    "debug.allowBreakpointsEverywhere": true
}

tasks.jsonは以下の通り

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build helloworld",
            "type": "shell",
            "command": "msbuild",
            "args": [
                "/property:GenerateFullPaths=true",
                "/p:Configuration=Debug",
                "/p:Platform=x64",
                "/t:build",
                "/consoleloggerparameters:NoSummary",
                "/p:DebugSymbols=true",
                "/p:DebugType=portable",
                "helloworld.sln"
            ],
            "group": "build",
            "presentation": {
                "reveal": "always"
            },
            "problemMatcher": "$msCompile"
        }
    ]
}

DebugType=portable以外のDebugTypeではデバッグできない気がする
例えばfullとか指定してるとデバッグに必要なシンボルファイルの形式としてWindows PDBで出力されて、たぶんこれはC# Dev Kitが対応していない?雰囲気がある?ので、必須な気がする
.vbprojファイル内でDebugType指定があるなら要らない気もする

launch.jsonは以下の通り

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "debug: .NET Framework",
            "type": "clr",
            "request": "launch",
            "preLaunchTask": "build helloworld",
            "program": "${workspaceFolder}/bin/x64/Debug/helloworld.exe",
            "args": "",
            "cwd": "${workspaceFolder}/bin/x64/Debug",
            "console": "internalConsole",
            "stopAtEntry": false,
            "justMyCode": true
        }
    ]
}

preLaunchTaskとしてtasks.jsonで記述したビルドタスク名を指定しておく

あとはvscodeで.slnファイルがあるディレクトリを開き、デバッグ開始するとビルドされてデバッグできる

img

以下はhello worldするだけのリポジトリ
ngmtine/helloworld

よくわからんけどデバッグできてよかったですね
おわり

Moyatto