kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

Roslyn付属のC# Interactve ウィンドウ

岩永さんのC#ユーザー会のRoslyn勉強会に行ってきました。資料はそのうちアップロードされるでしょう。RoslynをインストールするとC#のInteractiveウィンドウを使用することができるようになります。
We are sorry, the page you requested cannot be found.

ちゃんとIntelliSenseも効きます(もちろん完璧ではありません)。仕組みはどうなっているのよと思ってみれば、GUIDっぽいものを引数で渡して起動しているようです。一枚のVisual Studioに対して一つのInteractive windowしか起動できないようです。
ReplChannelでおそらく名前付きパイプ開いて、ReplShemaphoreで排他なんでしょうね。タスクマネージャーのコマンドプロンプトの引数を見るとそれっぽいものがあります。ほかのプロセスも引数を見ると結構面白いですよ。ChromeとかAdobe Readerとか。

プロセスを起動しているということは、System.Diagnostics.Process.GetCurrentProcess();でInteractive windowのプロセスIDがとれます。タスクマネージャーに表示されているIDと同じものになります。
もちろんEnvironment.Exit(0);とかやれば、ウィンドウが終了され、タスクマネージャーから現在のPIDがなくなり新しいPIDで起動します。#resetとかやれば同じことになります。
PowerShellももちろん悪くはないのですが、スクリプトでC#使えるようになるとうれしいですね。