Edited at

LinuxでMonoを使ってC#をコンパイル・実行する

More than 3 years have passed since last update.

目標:


  • NuGetを使ってRestSharpをインストールする

  • RestSharpを使ってHTTP POSTする


Monoをインストール

自分はArch Linuxなので

pacman -S mono

でインストール。他のディストロの場合はyumか何かで探してみてください。


NuGetをインストールする

wget --no-check-certificate https://nuget.org/nuget.exe

mozroots --import --machine --sync

certmgr -ssl -m https://go.microsoft.com
certmgr -ssl -m https://nugetgallery.blob.core.windows.net
certmgr -ssl -m https://nuget.org

途中何か聞かれるのでyesと入力。

こちらを参考にさせていただいた。

http://symfoware.blog68.fc2.com/blog-entry-1750.html

※mozrootsとcertmgrはmonoパッケージに含まれるコマンド


NuGetでRestSharpをGET

mono nuget.exe install RestSharp

カレントディレクトリの下にRestSharp.105.2.3がダウンロードされた。


DLLへのパスを通す

export MONO_PATH=./RestSharp.105.2.3/lib/net452


コードを書く


Test.cs

using System;

using RestSharp;

class Test
{
public static void Main()
{
var client = new RestClient("http://httpbin.org");

var request = new RestRequest("/post", Method.POST);
request.AddParameter("hoge", "123"); // adds to POST or URL querystring based on Method
request.AddParameter("sage", "456"); // adds to POST or URL querystring based on Method

// execute the request
IRestResponse response = client.Execute(request);
var content = response.Content; // raw content as string

Console.WriteLine(content);
}
}


RestSharpの使い方についてはこちら:

http://restsharp.org/


ビルドして実行

$ mcs -reference:./RestSharp.105.2.3/lib/net46/RestSharp.dll Test.cs

### ./Test.exe でも実行できる
$ mono Test.exe

{
"args": {},
"data": "",
"files": {},
"form": {
"hoge": "123",
"sage": "456"
},
"headers": {
"Accept": "application/json, application/xml, text/json, text/x-json, text/javascript, text/xml",
"Accept-Encoding": "gzip, deflate",
"Content-Length": "17",
"Content-Type": "application/x-www-form-urlencoded",
"Host": "httpbin.org",
"User-Agent": "RestSharp/105.2.3.0"
},
"json": null,
"url": "http://httpbin.org/post"
}

Test.exeRestSharp.dllを同じディレクトリに置いておけばMONO_PATHはセットしなくてもいい模様

配布時の推奨ディレクトリ構造がここに書いてある:

http://www.mono-project.com/docs/getting-started/application-deployment/


REPLを使う

$ csharp

Mono C# Shell, type "help;" for help

Enter statements below.
csharp> DateTime.Now
2016/09/17 12:30:35
csharp>

補完も効くので便利。