Visual Studio Codeで、.NET Coreのビルド&デバッグはできるっぽいのですが、.NET Frameworkの方法が見つからなかったのでまとめてみました。
参考にしたのは、ここです。
Visual Studio Code for .Net Framework - Stack Overflow
Explorerから*.slnプロジェクトファイルのあるフォルダーを選択
左上のアイコン「Explorer」をクリックして、「Add Folder」を選択して、.NET Frameworkコンソールアプリケーションのプロジェクトファイル(*.slnなど)があるフォルダーを選択して「Add」しましょう。
まだ、C#プログラミングのプラグインをVSCodeに入れていないようなら、自動的に「OmniSharp」などのプラグインが勝手にダウンロード&インストールされるかもしれませんが、その辺は今回、割愛。
ビルドタスク実行(とりあえずtasks.jsonの生成)
ショートカットキー「Ctrl+Shift+B」を押して、ビルドタスクの実行を行います。すると、まだビルド設定がないため、ウィンドウ上部に「tasks.json」を新たに作るようにメニューが現れます。
新しい「tasks.json」を作ることを選択すると、下の画像のように何種類かのビルド設定が表示されますので、
すると、デフォルトの「tasks.json」ファイルが、*.slnなどのプロジェクトファイルのあるフォルダーに、「.vscode」というフォルダーを作成し、その中に「tasks.json」ファイルが作成されます。
デフォルトでは、以下の内容の「tasks.json」ファイルが生成されます。
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"command": "msbuild",
"args": [
// Ask msbuild to generate full paths for file names.
"/property:GenerateFullPaths=true",
"/t:build",
// Do not generate summary otherwise it leads to duplicate errors in Problems panel
"/consoleloggerparameters:NoSummary"
],
"group": "build",
"presentation": {
// Reveal the output only if unrecognized errors occur.
"reveal": "silent"
},
// Use the standard MS compiler pattern to detect errors, warnings and infos
"problemMatcher": "$msCompile"
}
]
}
tasks.jsonの書き換え
もちろん、このままでは使えないので全面的に書き換えます。
なお、tasks.jsonの設定については、以下のページが参考になります。
https://code.visualstudio.com/docs/editor/tasks
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
//【重要】タスク名を記載する(後述のlaunch.jsonと連動します)
"label": "debug msbuild",
// プログラムの種類
"type": "shell",
// ビルドツール(MSBuild.exe)の位置。以下の例ではv.4.0を使うのでその実行ファイルパスを指定します。
"command": "C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\MSBuild.exe",
// MSBuild.exeへの引数を指定します。
"args": [
// プロジェクトファイル(*.slnなど)のあるパスを指定します。
"C:\\Users\\hibara\\Desktop\\ConsoleApp1\\ConsoleApp1.sln",
// ターゲット(/target)をビルドする
"/t:build",
// プロジェクトのビルドに使用するツールセットのバージョン
"/p:toolsVersion=4.0",
// デバッグビルド
"/p:Configuration=Debug",
// プラットフォームは「Any CPU(32bit, 64bit)」
"/p:Platform=\"Any CPU\""
],
// タスクのグループを設定します。この場合は一つだけなので適当の「build」としました。
"group": "build",
// タスクの出力がユーザーインターフェースでどのように処理されるかを定義します。
"presentation": {
// 出力を表示する統合ターミナルが常に表示され、タスクの実行ごとに新しいターミナルが作成されます。
"reveal": "always",
// 実行後にターミナルウィンドウにフォーカスを移します(
"focus": true,
},
// ビルドにエラーが発生した場合に、その出力から問題点を検出する際に使用する「プロブレムマッチャー」を指定する。
// ここではC#のコードなので、"$msCompile"が指定されています。
"problemMatcher": "$msCompile"
}
]
}
MSBuild.exeの引数については以下のURLを参考にしてください。
https://docs.microsoft.com/ja-jp/visualstudio/msbuild/msbuild-command-line-reference?view=vs-2019
実行・デバッグ設定(とりあえずlaunch.jsonの生成)
次に、「launch.json」を用意します。このファイルを作成するときは、VSCodeの左側にある「run」アイコンをクリックします。
クリックすると、VSCodeウィンドウ上部に「Select environment(環境設定選択)」が出てきますが、.NET Frameworkの選択項目はありませんので、とりあえず「.NET Core」を選択します。
すると、自動的に以下のような「launch.json」ファイルが生成されます。中身は、.NET Coreのものなので、このままでは使えません。
「launch.json」ファイルは、先ほど作成した「tasks.json」と同じ場所に生成されます。プロジェクトファイルがあるフォルダー、「.vscode」フォルダーの中です。
launch.jsonの書き換え
「launch.json」ファイルの中身は、以下のように大きく書き換えます。
{
// Use IntelliSense to find out which attributes exist for C# debugging
// Use hover for the description of the existing attributes
// For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md
"version": "0.2.0",
"configurations": [
{
// デバッグ時のウィンドウから実行を選択する際のメニュー項目名になります。
"name": ".NET Launch (console)",
// プログラムの種類は「Desktop CLR debugger」を指定します。
"type": "clr",
// 起動設定のリクエストの種類です。ここでは単純に「launch」です。
"request": "launch",
// 起動前のタスクを指定します。「tasks.json」内「label」で指定した名前を記載します。
"preLaunchTask": "debug msbuild",
// 起動する(ビルドされた)実行ファイルパスを指定します。
"program": "C:\\Users\\hibara\\Desktop\\ConsoleApp1\\ConsoleApp1\\bin\\Debug\\ConsoleApp1.exe",
// 上記の実行ファイルに付加する引数を以下に記載します。
"args": [],
// 作業ファイルのあるディレクトリーパスを指定します。この例では実行ファイルのある場所です。
"cwd": "C:\\Users\\hibara\\Desktop\\ConsoleApp1\\ConsoleApp1\\bin\\Debug\\",
// For more information about the 'console' field, see https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md#console-terminal-window
// 上記URLにあるとおり、コンソールは、VSCode内のコンソールに表示されるように指定します。
"console": "internalConsole",
// デバッグ中にデバッグコンソール表示をどうするかを指定します。ここではスタートと同時に表示としています。
"internalConsoleOptions": "openOnSessionStart"
},
]
}
特に「preLaunchTask」は重要です。先ほど「tasks.json」内で記載した「label」と、同じ値を記載する必要があります。この例ですと、「"debug msbuild"」が、それです。
なお、「launch.json」ファイルについての詳細は以下のURLを参照してください。
https://code.visualstudio.com/docs/editor/debugging
プログラムの実行、デバッグ
これで準備が整ったので、再びVSCodeの左側にある「run」アイコンをクリックして、ウィンドウ上部に出てくるメニューから「.NET launch(console) (ConsoleApp1)」を選択、三角のアイコンを押して実行します。
ビルドされた後に、実行された結果は以下にあるようにVSCodeのコンソールウィンドウに表示されます。
なお、プログラムの停止は、ツールバーにある四角アイコンの停止ボタンをクリックしてください。