(此文章同時發表在本人微信公衆號「dotNET每日精華文章」,歡迎右邊二維碼來關注。)html
題記:Miguel de Icaza在最近發表的一篇博文中暢談了Mono及其相關產品中的C#交互特性的演化狀況。git
在2008年,Miguel他們在Mono中引入了一個C# Shell程序(僅有命令行)。在實現這個交互Shell的過程,Mono爲.NET實現了大量有用的命令行編輯API,也促進了Mono本身的編譯器即服務特性的開發。幾個月後,爲這套Shell添加了一個UI界面。以下圖所示:github
而且還加入了plot(繪圖)命令:後端
與此同時,在Xamarin Studio了中也集成了相似功能,即Sketches:微信
這一工具的誕生是源於,使用Xamarin的開發人員須要的是一個全功能的C# REPL(Read-Eval-Print Loop,交互式執行環境),以便可以及時嘗試相關的代碼。由此他們引入了一個稱之爲Inspector的功能(這一個功能原計劃是用來做爲調試器輔助工具的)。Inspector能夠附加到正在運行中的Android/iOS/WPF線程中。也實現了一些後端功能來提供運行應用程序的可視展現:app
這個工具的交互界面是用HTML Canvas實現,從而更容易添加不少酷炫的可視化效果。ide
目前這個工具底層改用Roslyn來實現代碼的動態編譯了,效果就更加好了:工具
Frank Krueger爲了在iOS中實現編譯器即服務,從而編寫了Continuous,這是一個Xamarin Studio和Visual Studio的插件。利用這個插件,你無需額外使用其餘工具,就能夠編輯代碼實時看到iOS程序的效果(下面的視頻若是看不到,直接訪問視頻文件地址:https://pbs.twimg.com/tweet_video/CXb1RaBU0AAEldo.mp4):oop
目前,Miguel他們正在使用一個強大的HTML渲染引擎來顯示結果,而且升級了編譯器引擎。他們下一步工做是把這個C#交互環境作的更增強大。好比:post
編者注:其實在VS2015 Update1中已經引入了一個C#交互窗口,能夠實現全功能的REPL環境。