利用 C# REPL 在 Terminal 中直接執行 C# 程式碼


C# REPL 是能夠在指令視窗中直接執行 C# 程式碼的 dotnet tool,在 Github 上有 1.6K Star(統計時間: 2023-03-23)。平時在測試簡易程式碼時不需要再一直開新專案,可以直接在指令視窗中撰寫和測試 C# 程式碼,對於筆者這樣需要一直開新專案測試的人來說非常好用

優點:
  • 跨平台
  • 一行指令安裝完即可使用
  • 具有完整的提示和補全
  • 非常方便使用 NuGet 套件
  • 輸入變數直接查看內容

安裝

    
dotnet tool install -g csharprepl
    

更新

    
dotnet tool update -g csharprepl
    


使用

啟動方式:
    
csharprepl
    

之後就可以在裡面開心的寫程式了

使用 NuGet 安裝套件:
    
#r "nuget: PackageName"
    

引用套件
    
using PackageName;
    

下面是筆者 csharprepl 透過 AngleSharp 套件爬取 Hacker News 網站的範例:

# csharprepl
Welcome to the C# REPL (Read Eval Print Loop)!
Type C# expressions and statements at the prompt and press Enter to evaluate them.
Type help to learn more, and type exit to quit.

#r "nuget: AngleSharp"
Package 'AngleSharp.1.0.1' was successfully installed.

using AngleSharp;

var context = BrowsingContext.New(Configuration.Default.WithDefaultLoader());

var document = await context.OpenAsync("https://news.ycombinator.com/");

var element = document.QuerySelectorAll("tr[id]");

foreach (var tr in element)
{
    var title = tr.QuerySelector(".titleline")?.TextContent;
    var link = tr.QuerySelector(".titleline > a[href]")?.GetAttribute("href");
    Console.WriteLine($"Title: {title}, Link: {link}");
}
Title: The drama in trying to convert election PDFs to Spreadsheets (markessien.com), Link: https://markessien.com/posts/drama_of_transcription/
Title: Hindenburg Research Outs Block Inc as Fraud (hindenburgresearch.com), Link: https://hindenburgresearch.com/block/
Title: OpenAI’s policies hinder reproducible research on language models (aisnakeoil.substack.com), Link: https://aisnakeoil.substack.com/p/openais-policies-hinder-reproducible
    


總結

對於測試來說非常好使用,許多簡單的任務不需要開新專案,省去了日後要慢慢確認那些專案可以刪掉的功夫。 可以及時輸出也很方便,也有基本的內容提示和說明、自動補全,不會完全無法開發。

不過,如果是以前這樣的功能就已經足夠,非常好用, 而現在大家都被 IDE 寵壞,有時候會沒辦法第一時間反應是要 using 哪個 namespace, 比較少用的語法也都很習慣(依賴)有 IDE 的提示,強大的自動補全,沒有辦法脫離。

所以必須要很慚愧的說,下次要測試時,我依然會開啟 Rider (JetBrains 出品的 C# IDE),而不是 csharprepl

最後附上解除安裝的指令:
    
dotnet tool uninstall -g csharprepl

    


參考資料:
Github - waf/CSharpRepl

留言