34
44

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

VSCodeで.NET Frameworkコンソールアプリをビルド&デバッグする

Posted at

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」を作ることを選択すると、下の画像のように何種類かのビルド設定が表示されますので、
MSBuildを選択する

「MSBuild」を選択しましょう。
デフォルトのtasks.jsonが作成される

すると、デフォルトの「tasks.json」ファイルが、*.slnなどのプロジェクトファイルのあるフォルダーに、「.vscode」というフォルダーを作成し、その中に「tasks.json」ファイルが作成されます。
tasks.jsonファイルは.vscodeフォルダーに作成される
tasks.jsonファイルが作成される

デフォルトでは、以下の内容の「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

tasks.json
{
  // 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」アイコンをクリックします。
runアイコンをクリックする

クリックすると、VSCodeウィンドウ上部に「Select environment(環境設定選択)」が出てきますが、.NET Frameworkの選択項目はありませんので、とりあえず「.NET Core」を選択します。
.NET Coreの環境設定を選択する

すると、自動的に以下のような「launch.json」ファイルが生成されます。中身は、.NET Coreのものなので、このままでは使えません。
launch.json」ファイルが作られる

「launch.json」ファイルは、先ほど作成した「tasks.json」と同じ場所に生成されます。プロジェクトファイルがあるフォルダー、「.vscode」フォルダーの中です。
「.vscode」フォルダの中に「launch.json」が生成される

launch.jsonの書き換え

「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のコンソールウィンドウに表示されます。
プログラム実行結果の表示

なお、プログラムの停止は、ツールバーにある四角アイコンの停止ボタンをクリックしてください。

34
44
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
34
44

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?