巧用CSI 進行dll或程式的簡易單元測試

2021-07-22 14:01:24 字數 1440 閱讀 3456

自從 roslyn 面世已來,圍繞.net的各種風聲水起。到底它有何妙之處以至一石擊起千層浪呢?首先咱們來來看它的主人微軟是怎麼說它的:「compiler-as-a-service」、」apis」、「script」、「open source」 等等。

今天我要談的是其中的乙個小工具 csi(compiler services interactive) 的應用。這個小東東其實很好理解,就是c# code as script ,即把命令列輸入的內容當作c# 指令碼進行動態編譯處理。因為有這乙個功能,苦逼的bug工程師終於有福利了,因為使用csi可以很方便的讓我們對做程式進行除錯工作了,bug的復現也就容易很多了。下面是幾個用csi當測試工具使常用的幾個技巧:

nuget裡,你只需要引入:microsoft.net.compilers、microsoft.codeanalysis就可以使用它了
對於winform程式,一般躲在

package/microsoft.net.compilers/tools目錄下

對於web程式,一般生成後,bin/roslyn目錄下

雙擊csi.exe即可開始使用
#r "程式集名稱,如果不在當前目錄,則使用相對路徑或完整路徑"

#load "新增.cs檔案或程式集"

一般情況下#r 用來引導程式集 #load 用來載入檔案

這個沒有技巧,你就把它當作寫單元測試來。如:
#r "e:\datasource\ihu.doctor\lib\common.dll"

using sinldo.common.extensions;

using

static system.console;

public

static

string

findstring(string

value, string search, out

int index, out

string parts)

index++;

}return

null;

}string val = "123,456,789,012,456,798,5689,5678,568,782,458,962";

int index;

string parts;

string result = findstring(val, "568", out index, out parts);

writeline(string.join(",", parts));

writeline($"index:,value:");

想要簡單直接列印結果內容,由其是一些複雜的結構,你可以輸入要列印的變數,後面不要帶「;」即可。

巧用正則查詢或替換

主要語法 常用元字元 說明 匹配除換行符以外的任意字元 w 匹配字母或數字或下劃線或漢字 s 匹配任意的空白符 d 匹配數字 b 匹配單詞的開始或結束 匹配字串的開始 匹配字串的結束 常用限定符 語法 說明 重複零次或更多次 重複一次或更多次 重複零次或一次 重複n次 重複n次或更多次 重複n到m次...

巧用巨集定義進行除錯

巧用巨集定義進行除錯 在進行程式設計時,有時我們往往不希望借住於除錯工具 如 gdb,vc 而以輸出除錯資訊的方式進行除錯時,我們就可以借住於強大的巨集定義來進行除錯。一 在gcc下的定義方法,因為gcc支援變引數的巨集定義,所以我們可以用如下定義 ifdef debug define dbg fo...

巧用CSS進行全域性控制

解決的辦法 1.在css中加上table 2.table的cellspacing,cellpadding是定義的 單元格 間的樣式,所以應該是定義在td標籤上的。cellspacing對應td的magin,cellpadding對應td的 padding。table tr td 第一種方法不太好,因...