CentOS7にVisual Studio Codeをインストールし、C#アプリケーションをデバッグする。
動作環境
・CentOS 7
インストールするもの
インストールするものは以下。
- Visual Studio Code
- Mono
- DNVM、DNX
- Node.js
Visual Studio Code単体ではコンパイルできないため、LinuxでのC#実行環境であるDNX、DNXの動作に必要なMonoのインストールが必要となる。
DNVMは.NETのバージョン管理で、DNXをインストールするのに必要となる。
Node.jsは、Visual Studio Codeのインテリセンスに必要となる。
Monoのインストール
MonoをLinuxのインストール用ページに記載されている方法でインストールする。
software.opensuse.org: Install package home:tpokorra:mono / mono-opt
ウェブブラウザで上記のページを開いた後、CentOSをクリックする。
上の画像のように、インストール方法が表示される。
記載されているコマンドを実行する。
% cd /etc/yum.repos.d/
% wget http://download.opensuse.org/repositories/home:tpokorra:mono/CentOS_CentOS-7/home:tpokorra:mono.repo
% yum install mono-opt
monoのインストール中、何度かYes/Noの入力を促されるため、「y 」を入力する。
インストール完了後、環境変数MONO_HOMEを設定し、Monoのコマンドを実行可能にする。
% vi /etc/profile.d/mono.sh
#!/bin/bash
MONO_HOME=/opt/mono
PATH=$PATH:$MONO_HOME/bin
export PATH MONO_HOME
export CLASSPATH=.
設定用のシェルに実行権限を与える。
% chmod +x /etc/profile.d/mono.sh
環境変数を有効にする。
% source /etc/profile.d/mono.sh
インストールが完了していることの確認として、バージョンを表示する。
% mono --version
DNVM、DNXのインストール
DNVMを下記のコマンドでインストールする。
% curl -sSL https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.sh | DNX_BRANCH=dev sh && source ~/.dnx/dnvm/dnvm.sh
インストールが完了していることの確認として、バージョンを表示する。
% dnvm -v
DNXを下記のコマンドでインストールする。
% dnvm upgrade -r mono
インストールが完了していることの確認として、バージョンを表示する。
% dnx --version
Node.jsのインストール
Node.jsを下記のコマンドでインストールする。
% yum install epel-release
% yum install nodejs
インストールが完了していることの確認として、バージョンを表示する。
% node -v
Visual Studio Codeのインストール
VisualStudioのサイトからダウンロードする。
Visual Studio Code - Code Editing. Redefined.
ダウンロード後、zipファイルを展開する。
展開したディレクトリ内の「Code」というシェルファイルを実行することによって、VisualStudioCodeが起動する。
C#プロジェクトの作成、実行、デバッグ
ここから、C#アプリケーションのプロジェクト、コードを作成する。
Visual Studio Codeの左上のアイコン「Explore」を押し、「Open Folder」を押す。
任意のフォルダを作成する。
ここでは、「HelloWorld」というフォルダを作成することにする。
作成したフォルダ名の横のアイコン「New File」を押し、csファイルを作成する。
ここでは、「HelloWorld.cs」というファイルを作成することにする。
HelloWorld.csに下記のコードを記述する。
using System;
namespace HelloWorld
{
public class HelloWorld
{
static public void Main()
{
Console.WriteLine("Hello World");
Console.ReadKey();
}
}
}
次に、作成したフォルダ名の横のアイコン「New File」を押し、csprojファイルを作成する。
ここでは、「HelloWorld.csproj」というファイルを作成することにする。
HelloWorld.csprojに下記の設定内容を記述する。
<Project DefaultTargets = "Build"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- Specify the inputs by type and file name -->
<ItemGroup>
<CSFile Include = "HelloWorld.cs"/>
</ItemGroup>
<Target Name = "Build">
<!-- Run the Visual C# compilation using input files of type CSFile -->
<CSC Sources = "@(CSFile)"
DebugType="full"
Optimize="no"
OutputAssembly="HelloWorld.exe" >
<!-- Set the OutputAssembly attribute of the CSC task to the name of the executable file that is created -->
<Output TaskParameter="OutputAssembly"
ItemName = "EXEFile" />
</CSC>
</Target>
</Project>
プロジェクトファイルができたので、ビルドする。
Ctrl+Shift+pを押すと、コマンド入力欄が表示される。
「build」と入力し、「Run Build Task」を押す。
続けて、「Configure Task Runner」を押すと、「tasks.json」ファイルができる。
「tasks.json」ファイルは、プロジェクトをコンパイルするタスクの設定を書いておくファイル。
このファイル内を「CSC」で検索し、CSC用の設定のコメントアウトを解除して、有効化する。
(本記事の執筆時点では、109行目から128行目のコメントアウトを解除した。)
初期状態ではTypescript用の設定が有効化されているが、これはコメントアウトして無効化する。
さらに、「command」が「msbuild」となっている箇所を、「xbuild」に変更する。変更すると、下記のようになる。
{
"version": "0.1.0",
"command": "xbuild",
"args": [
// Ask msbuild to generate full paths for file names.
"/property:GenerateFullPaths=true"
],
"taskSelector": "/t:",
"showOutput": "silent",
"tasks": [
{
"taskName": "build",
// Show the output window only if unrecognized errors occur.
"showOutput": "silent",
// Use the standard MS compiler pattern to detect errors, warnings
// and infos in the output.
"problemMatcher": "$msCompile"
}
]
}
再度、Ctrl+Shift+p、「build」を入力し、「Run Build Task」を押す。
ビルドが成功し、「HelloWorld.exe」が出力される。
次に、デバッグする。
画面左側のアイコン「Debug」を押し、緑色三角のアイコン「Start」を押す。
デバッグの候補がいくつか表示されるので、「C# mono」を選択する。
「launch.json」が出力される。
「launch.json」を下記のように修正する。
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch",
"type": "mono",
"request": "launch",
"program": "HelloWorld.exe",
"args": [],
"cwd": ".",
"runtimeExecutable": null
//"env": {}
},
{
"name": "Attach",
"type": "mono",
"request": "attach",
"address": "localhost",
"port": 5858
}
]
}
「launch.json」を編集後、再度、「Start」アイコンを押す。
プログラムが実行され、コンソール画面が立ち上がる。
ブレイクポイントを作成していないためこのようになったが、ブレイクポイントを作成しておけば、任意の箇所でブレイクできる。
参考:
Visual Studio Code を使ってUbuntu でC# コンソールアプリをデバッグ
CentOS 7 に Node.js をインストールする - Qiita
Installing ASP.NET 5 On Linux — ASP.NET 0.0.1 documentation