早年 .NET Framework SDK 預設是顯示英文訊息,得另外安裝 Language Pack 才會顯示中文。後來的 .NET / Visual Studio / VSCode 版本聰明多了,會依據你的作業系統語系安裝及使用對應的語言,於是乎在中文版 Windows 編譯出錯時顯示的是中文訊息:

BUT! 開發用的專業語術我習慣直接用英文,看到「解決方案」需在心裡先翻譯回 Solution 才會順,而且用錯誤訊息查資料,英文比中文更有效率更精準(雖然有 AI 之後,用中文已好查很多),所以錯誤訊息我都寧可直接看英文版。

中文訊息還有另一個缺點,某些第三方軟體整合呼叫 MSBuild 時,可能會因中文編碼處理不當讓中文變亂碼,這點困擾我一陣子,但我很鄉愿地放著沒處理,遇到就自己開 CMD 或 VSCode 重跑一次看訊息除錯。

今天興起順手查了一下,沒想到解法出奇簡單 - 從 .NET 8 開始,MSBuild 與 dotnet build 都會遵守 DOTNET_CLI_UI_LANGUAGE 環境變數,依其指定的語言進行命令列輸出。

由於 .NET Core 跟 .NET 7 以前的版本都已 EOS,現在想看英文版 .NET 編譯訊息,在 CMD 執行 set DOTNET_CLI_UI_LANGUAGE=en (暫時) / setx DOTNET_CLI_UI_LANGUAGE en (永久) 設定環境變數就 OK 囉~

Explains how to force English build messages in modern .NET by setting the DOTNET_CLI_UI_LANGUAGE environment variable, avoiding localized Chinese output and encoding issues when using MSBuild or dotnet build.


Comments

Be the first to post a comment

Post a comment