星期一, 12月 17, 2012

Console 執行 LINQPad 檔案

話說科技始終來至於人性,懶惰來自於內心,基於這兩點,Bibby 我很常很常用 LINQPad 來幫我做一些有的沒有的測試,因為 LINQPad 很方便,可以不用開任何新 Project 就可以開始寫 Code 了,它的方便和實用性,不用我再多加累述,不清楚的可以看我好朋友 Kevin 這篇文章 LINQPad - 好用到爆炸、.NET開發人員必備的好用工具,就可以明瞭上手。今天為大家介紹一下,稍微另類的用法,簡單說就是 Bibby 我就是想要懶,當我們 LINQPad 的 Code 寫好後,如果需要排程使用,還是要開新的 Project 來把 寫好的 Code 移過去,基於懶惰不再重工的原則(這啥鬼原則),所以在想可不可以直接用 Command 的方式,呼叫就給它用下去,本來想寫個 Console 來解析 LINQPad 的 Code 的,搜尋一下發現,已經有人佛心幫我們寫好了這個小工具,那就是 LINQPadRunner,這個工具可以在 Command 下直接使用,例如

C:\LPRun.exe MyTestLINQPad.linq

也可以多幾個參數

C:\LPRun.exe MyTestLINQPad.linq “aa” “bb” “cc”

這兩種的執行方法,完全達到我想"懶"的原則,讚!打開專案看看 Source Code 是怎麼寫的,可以看到作者是用 CSharpCodeProvider 的類別來動態編譯 LINQPad 裡面的 Code,專案裡面的 Code 沒有多少,有興趣的可以自己參考一下,還蠻好玩的!

這裡提供一下個人覺得優點和缺點,讓大家可以評估一下

優點是

  1. 不需要裝 LINQPad 就可以直接執行 LINQPad 的檔案
  2. 不需要編譯,也不需要 Visual Studio,直接用文字編輯器就打開 .linq 的檔案直接修改
  3. 檔案很單純,一個 LPRun.exe 執行檔還有一個寫好的 .linq 就可以跑了,不像開個專案一樣,一堆有的沒有的東西
  4. 可以 Reference 其他的 dll 進來,用法都跟 LINQPad 內的方式一樣

缺點是

  1. 需要有裝 .NET Framework 才可以跑(沒有這東西,好像做啥都是多說的)
  2. 不能用 Extention Method (其實改 LINQPadRunner Source Code 後應該就行)
  3. 執行會慢一點點點,因為是動態編譯執行的關係

以上大概就是這樣,有問題一起討論吧!!!

Referenece
https://github.com/mcintyre321/LINQPadRunner
http://msdn.microsoft.com/zh-tw/library/microsoft.csharp.csharpcodeprovider%28v=vs.80%29.aspx

沒有留言: