告別 Visual Studio Installer 的痛苦:從《Welcome to Johnny’s World》談 msvcup 的革命性改變

本篇文章更新時間:2026/02/16
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知或向一介資男的 LINE 社群反應。
如果本站內容對你有幫助,歡迎贊助支持


用一個小工具,解開 Windows 原生開發者的長年詛咒

編輯前言:這篇筆記源自文章《Welcome to Johnny's World》(連結)。作者直指 Visual Studio Installer 的混亂與負擔,並提出一個新工具 msvcup,讓 Windows C/C++ 開發者不再被巨型 IDE 綁架。對於曾在 Windows 上痛苦設定過編譯器的人,這篇絕對值得一讀。

核心觀點 (Key Takeaways)

  • Visual Studio Installer 讓 Windows 原生開發變得不必要地複雜:單純為了 clang/cl.exe 就得下載 15–20GB 的套件,還常常踩雷。
  • Windows 工具鏈的問題來自「編輯器、編譯器、SDK 三者綁死」的遺留設計,缺乏版本化、透明度與可攜性。
  • msvcup 是一種全新的解法:以 JSON manifest 解析 + 精準安裝的方式,把 MSVC 工具鏈模組化、版本化、可自動化,真正做到「免安裝 Visual Studio」即可編譯。

深入解析

原文一開始直接揭露開發者的共同惡夢:

“Saying 'Install Visual Studio' is like handing contributors a choose-your-own-adventure book riddled with bad endings.”

這句話太貼切。我過去在 Windows 上協助團隊設定 C++ 開發環境時,最常回答的不是程式語法,而是「你是不是少勾 Windows SDK?」「v143 Build Tools 裝了沒?」這類完全不應該屬於專案維護者的問題。

作者指出,其中根本原因在於:

  • Windows 的 C/C++ 工具鏈是 巨型 monolith(巨石架構)
  • Visual Studio = 編輯器 + 編譯器 + SDK + 各種神秘模組。
  • 缺乏可預期版本、乾淨安裝、可攜性與重現性(reproducibility)。

在 Linux,只需要一行:

apt install build-essential

但在 Windows,你得在一個 GUI 安裝器裡穿越迷宮般的 checkbox,勾錯了還可能導致整個環境崩壞。

msvcup:用「現代依賴」的精神重新下載 MSVC

作者花了幾週打造 msvcup,核心理念是:

  • 工具鏈應該版本化(versioned)
  • 應該是 isolated,不污染系統
  • 應該是 declarative,可自動化

而 msvcup 就是用官方 JSON manifest 去找出真正需要的檔案,把它們直接下載到像是:

C:\msvcup\msvc-14.44.17.14
C:\msvcup\sdk-10.0.22621.7

這些都是獨立、可共存的版本,而不是被綁在 Visual Studio 裡的黑箱。

更厲害的是 autoenv:它會自動生成 wrapper exe,讓你像平常一樣呼叫 cl.exe,但環境會在背後自動設定,不需要再使用脆弱的 vcvarsall.bat

在原文展示的簡易範例裡,一個 build.bat 居然就取代了整套 Visual Studio 安裝流程,第一次執行下載工具鏈,之後執行速度只需毫秒。

真實案例:Tuple 和 Raylib

作者提到他們在 Tuple(pair programming 軟體)完全用 msvcup 重建 CI:

  • 同時支援 x86_64 與 ARM
  • 使用者與 CI 擁有一致工具鏈
  • 完全不需安裝 Visual Studio

而在 Raylib 範例中,整個 Windows 編譯流程是純 script、純 CLI,沒有 GUI、沒有猜測、沒有祈禱。

這種透明度,真的前所未見。

筆者心得與啟發

讀完這篇,我第一個反應是:「Windows 終於走到可以像 Linux 一樣做 reproducible builds 的時代了嗎?」這確實讓我重新思考 Windows 原生開發的可能性。

對我來說,這篇文章有三個重大啟發:

  • 開發者不該再為 Visual Studio Installer 做義工。設定工具鏈應該是可自動化、可版本化,而不是靠 GUI 去「猜」。
  • 工具鏈與 IDE 必須解耦。很多專案從頭到尾根本不需要 Visual Studio,只需要 cl.exe、link.exe、headers、SDK 而已。
  • msvcup 讓 Windows 有機會縮短與 Linux/macOS 在開發體驗上的差距。可預期的 build environment 是 CI/CD 與多人合作的基石。

從文章最後的 tone 可以感覺到作者是真心在慶祝:「Visual Studio can’t hurt you anymore.」這句話我想會讓很多 Windows 工程師會心一笑。

如果你是 Windows C/C++ 開發者、要做跨平台 CI、或正在苦惱工具鏈一致性,那我強烈建議實際跑一次原文提供的腳本。那種「終於解放了」的感受,可能會讓你像我一樣深刻記住 msvcup 這個名字。


Share:

作者: Chun

資訊愛好人士。主張「人人都該為了偷懶而進步」。期許自己成為斜槓到變進度條 100% 的年輕人。[///////////____36%_________]

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


文章
Filter
Apply Filters
Mastodon