◆ ファイル共有+別パソコンで csi.exe を実行
◆ type input.cs | csi > output.txt
◆ MSBuild\14.0\Bin をフォルダをまるごとコピーしてくるだけでも csi.exe が動いた 

これまでにも似たことを書いていて続きのようなもの
今のところは公式サイトのオンラインコンパイラと VisualStudio の C# interactive を使っているのが基本です

VisualStudio は重いですし軽々全部のパソコンにいれるものでもないので デスクトップパソコンにだけいれてます
ブログはノートパソコンで書いてるので 必然的に VisualStudio の C# interactive は使えません

公式サイトのオンラインコンパイラは速度など問題ないですが書くところが小さいとか ちゃんと実行するのでちょっと試すだけのコード試したいときに面倒とか 結果見たいのがいっぱいで Console.WriteLine だらけになるしでやっぱり書くのがめんどうという問題もあります

どうにか楽にコードを試せるようにしたい!と試行錯誤したところ最終的にこんな感じになりました

別パソコンで実行させる

まず共有フォルダを用意します

私の場合はノートパソコンの C:\share\ フォルダを共有するようにしてるのでそこを使いました
このフォルダに cs.txt ファイルと cs.out.txt ファイルを作ります
このファイル名に意味は無いので好きにしても大丈夫

そして VisualStudio がインストールされてるパソコンでコマンドプロンプトを開き
type \\DESKTOP-PC\share\cs.txt | "C:\Program Files (x86)\MSBuild\14.0\Bin\csi.exe" > \\DESKTOP-PC\share\cs.out.txt
を実行します

共有ファイルのパス適当に

やってることは まず type で cs.txt ファイルを標準出力に書き出してそれをパイプでつないで csi.exe (C# interactive) に流し込みます
そしてその結果を cs.out.txt に出力してます

サンプル実行

cs.txt に実行したいコードを書きます
new List<int> { 1, 2, 3 }.Concat(new List<int> {4, 5})

VisualStudio の入ったパソコンで上のコマンドを実行します
すると cs.out.txt に結果が入っています
Microsoft (R) Visual C# インタラクティブ コンパイラ バージョン 1.3.1.60616
Copyright (C) Microsoft Corporation. All rights reserved.

詳細については、「#help」と入力します。
> ConcatIterator { 1, 2, 3, 4, 5 }

自分の入力は表示されないので 「>」 のあとに結果がでてきます

コードを変えてもう一度実行したくなったら cs.txt をちょっと書き換えて再度実行です
2回目以降はコマンドプロンプトで「↑, Enter」と押すだけなのでキーボードが横にあれば手を伸ばしてサッと実行できます

ファイルの変更を監視するというのもアリですが簡単にできなさそうなのでここは手動です

慣れてくれば

エディタに書き込む → 右手で「↑Enter」 → エディタのタブを切り替えると結果が見える

これだけなので快適度が高いです

良くないところは VisualStudio が入った実行用パソコンの電源をつけておかないといけないところくらい?
でもそこはこれまでも 別の方法でソースを実行用パソコンに送信して手動で C# interactive に貼り付けて結果をブログ用のパソコンに貼り付けってやってたのでマイナスにはなってません

オンラインコンパイラ使うにしても結局ほとんどの場合がローカルのエディタで下書きしてそれをコピペしてましたら手をのばす程度の負担です

なんで Interactive?

VisualStudio 入ったパソコンで実行するなら通常のコンパイル+実行というのもできますがあえてcsi.exe で Interactive 実行してます
理由は Console.WriteLine がめんどうだから

ここが結構重要です
どこでもスニペット展開できるフリーソフトあればそんなに困らないですが そういう環境じゃないと何度も打つのってめんどうなんです

そ れ に

もっと重要なのが REPL のオブジェクト表示です
new List<string> { "a", "b" }
と打ち込むと
List<string>(2) { "a", "b" }
と返って来ます

任意のオブジェクトを Console.WriteLine で表示させるのは簡単じゃないです
ほとんどの型は ToString しても型くらいしかわからず中のデータが見えません
毎回自分でひとつひとつ取り出して表示させるか オブジェクトを渡すとリフレクションですべて取り出して表示してくれる関数を作ってそれを実行するかしないと中身がわかりません

そういう手間がいらなくて簡単に結果が見える REPL っていいですよね

一応……

VisualStudio のインストールは時間かかるしファイルサイズは重いし ってインストールする気が起きないものですが 実は csi.exe があるフォルダをフォルダごとコピーしてくればそのパソコンで csi.exe が動くんです

場所はここ
C:\Program Files (x86)\MSBuild\14.0\Bin\


ファイル数は 1000 以上で数十 MB あるので 5~10 秒程度はかかります
Windows 10 にインストールした VisualStudio 2015 Community についてきた(というかコンパイラ関係ではメイン)ものを Windows 7 に持ってきて問題なく動いてます