The primary new feature of Ver 1.4 is batch mode!

Now you can run Mini C# Lab program as a scheduled task, no UI interactivity is needed. Here are some batch argument examples:

  • Load and execute x:\temp\test.cs, use the output to overwrie x:\temp\log.txt
    MiniCSharpLab /batch /cs:x:\temp\test.cs /out:x:\temp\log.txt /overwrite
  • Load and execute "c:\some path\test.cs", append the output to LogyyyyMMdd.txt (the file name will be change according to System.DateTime.Now)
    MiniCSharpLab /batch /cs:""c:\some path\test.cs"" /out:Log{yyyyMMdd}.txt
  • Load and execute x:\aa.cs, append the output to x:\aa.txt, if execution time is longer than 1200 seconds, program will be terminated.
    MiniCSharpLab /batch /cs:x:\aa.cs /out:x:\aa.txt /timeout:1200
  • Load and execute x:\aa.vb as .NET 3.5 program, append the output to x:\aa.txt
    MiniCSharpLab /batch /vb:x:\aa.vb /out:x:\aa.txt /v35
There are also minor bug fix and improvement:
  1. Fix: Thread.Sleep for 0.5" after execution to avoid output loss (I hope it works)
  2. Add: Add execution duration display

【中文說明】

其實1.4版已經寫出來蠻久了,上回的黑暗盃程式魔人賽裡就已經偷跑過了。今天剛好跟同事提到要寫簡單的Script跑排程,索性一不做二不休,把它Release到CodePlex網站上,想參考程式的人也可以在CodePlex找到原始碼。

1.4版最大的特色是支援批次無UI的方式執行,這個之前網友Ammon也有提過,剛好也是我自己不少排程作業上的需求。執行參數如下:

  • 載入並執行x:\temp\test.cs, 輸出結果覆寫到x:\temp\log.txt
    MiniCSharpLab /batch /cs:x:\temp\test.cs /out:x:\temp\log.txt /overwrite
  • 載入並執行"c:\some path\test.cs", 輸入結果附加到LogyyyyMMdd.txt檔案後端(檔名會隨執行時間變化)
    MiniCSharpLab /batch /cs:""c:\some path\test.cs"" /out:Log{yyyyMMdd}.txt
  • 載入並執行x:\aa.cs, 輸出結果附加到x:\aa.txt。若執行時間超過1200秒,會被強制中止
    MiniCSharpLab /batch /cs:x:\aa.cs /out:x:\aa.txt /timeout:1200
  • 載入x:\aa.vb,視為.NET 3.5程式執行,輸出結果附加到x:\aa.txt
    MiniCSharpLab /batch /vb:x:\aa.vb /out:x:\aa.txt /v35

另外還有兩個小修改:

  • 修正: 加入0.5秒Thread.Sleep延遲,防止輸出結果遺失(希望有效)
  • 加入執行時間顯示功能
  • 如發現Bug或有功能建議,歡迎在此留言回饋。(但不一定能即時修正或擴充,請見諒!)


    Comments

    # by Will 保哥

    幾點建議: 1. 我覺得應該有個直接輸出到 Console 的選項,不一定要輸出到檔案,這樣就可以做為 CSharp Script Interpreter 來用! ^^ 2. 加上文字說明的 MiniCSharpLab14.exe /? 選項,可顯示指令列參數的說明。 3. 輸出檔案的地方每次都會有以下資訊,不知道可否提供選項排除這些資訊在檔案中出現。 ************************************************** [Mini C# Lab Batch Mode] 2010/03/07 16:02:14 Built successfully in 118ms! Prepare to run... ==================================================

    # by S

    Bug report 不知道是 Bug 還是操作有誤 1. 開啟 Mini C# Lab 1.4 2. 選擇 Copy as HTML 3. 勾選 Embed Css 4. 選擇 Copy 或 Copy & Close 5. 出現 Exception 畫面 訊息如下 System.ArgumentNullException: 值不能為 null。 參數名稱: stream 於 System.IO.StreamReader..ctor(Stream stream, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize) 於 System.IO.StreamReader..ctor(Stream stream) 於 Manoli.Utils.CSharpFormat.SourceFormat.GetCssString() 於 C:\Users\jeffrey\Documents\Visual Studio 2008\Projects\MiniCSharpLab\MiniCSharpLab\Formatter\SourceFormat.cs: 行 150 於 Manoli.Utils.CSharpFormat.SourceFormat.FormatCode(String source, Boolean lineNumbers, Boolean alternate, Boolean embedStyleSheet, Boolean subCode) 於 C:\Users\jeffrey\Documents\Visual Studio 2008\Projects\MiniCSharpLab\MiniCSharpLab\Formatter\SourceFormat.cs: 行 193 於 Manoli.Utils.CSharpFormat.SourceFormat.FormatCode(String source) 於 C:\Users\jeffrey\Documents\Visual Studio 2008\Projects\MiniCSharpLab\MiniCSharpLab\Formatter\SourceFormat.cs: 行 126 於 MiniCSharpLab.FormatCodeHtml.btnCopy_Click(Object sender, EventArgs e) 於 C:\Users\jeffrey\Documents\Visual Studio 2008\Projects\MiniCSharpLab\MiniCSharpLab\FormatCodeHtml.cs: 行 78 於 MiniCSharpLab.FormatCodeHtml.btnClose_Click(Object sender, EventArgs e) 於 C:\Users\jeffrey\Documents\Visual Studio 2008\Projects\MiniCSharpLab\MiniCSharpLab\FormatCodeHtml.cs: 行 89 於 System.Windows.Forms.Control.OnClick(EventArgs e) 於 System.Windows.Forms.Button.OnClick(EventArgs e) 於 System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) 於 System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) 於 System.Windows.Forms.Control.WndProc(Message& m) 於 System.Windows.Forms.ButtonBase.WndProc(Message& m) 於 System.Windows.Forms.Button.WndProc(Message& m) 於 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) 於 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) 於 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

    # by Johnny

    版本是 1.4, About 寫的卻是 1.3

    # by Terry

    建議可以加上傳入自定參數的處理,這樣就可以先一步取代Batch

    # by dw4dev

    黑大您好: 感謝您無私分享這好工具,但因為 CodePlex 即將關站, 所以小弟就將您分享的 CODE 先放上 GitHub 中, 必免這優良工具消失無形 ^^ ,https://github.com/dw4dev/Mini-CSharp-Lab。 若您有覺得不妥或是有侵犯到您,再請來信告知。 謝謝您。

    # by Jeffrey

    to dw4dev, OK的,這個專案是很早期的作品,已荒廢多年(後來多改用LINQPad),很高興還有人觀注並願意維護~ :P

    Post a comment