公司發了 MacBook,你仍按 <kbd>Ctrl+S</kbd> 儲存、在檔案總管裡找方案——肌肉記憶比工具鏈更難遷。本文按「首日能編譯、首週能提 PR、首月能跑 CI」三階段給出可執行清單。
如果你剛拿到 MacBook,第一反應仍是去「開始功能表」找 Visual Studio,或是在檔案總管裡雙擊 .sln——這表示最難遷的不是 SDK,而是肌肉記憶。本文面向 在 Windows 上使用 Visual Studio / Visual Studio Code 多年的 .NET、C++ 或全端開發者,依「首日能編譯、首週能提 PR、首月能跑 CI」三階段,給出可複製的環境清單;文末說明何時把 iOS 建置 offload 到雲端 Mac。
首日兩小時:讓終端機、Git 與 dotnet 先跑起來
別一上來就裝完整 Xcode。按下面順序,通常 120 分鐘內 能恢復「開啟方案 → F5 偵錯」的主路徑。
1. Command Line Tools 與 Homebrew
xcode-select --install # 彈窗確認;僅需 Git、clang 時夠用
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
Apple Silicon 上 Homebrew 前綴是 /opt/homebrew(Intel 為 /usr/local)。裝完後用 brew doctor 確認無報錯。
2. .NET SDK 與常用 CLI
brew install --cask dotnet-sdk
brew install git gh jq fzf ripgrep
dotnet --info # 確認 SDK 版本與 RID(osx-arm64)
團隊若鎖定 SDK 版本,在專案根目錄加 global.json:
{
"sdk": {
"version": "8.0.400",
"rollForward": "latestFeature"
}
}
3. Git 身分與換行符
git config --global user.name "你的名字"
git config --global user.email "you@company.com"
git config --global core.autocrlf input # Mac 端建議 input,避免 Windows 同事收到整庫換行 diff
踩坑記錄: 從 Windows 克隆的儲存庫若出現「所有檔案 modified」,九成是
core.autocrlf與.gitattributes不一致。首日先統一團隊規範,比日後洗歷史便宜。
IDE 怎麼選:Rider、VS Code 還是保留 Windows?
微軟已結束 Visual Studio for Mac 支援(2024-08)。現實選項如下:
| 工具 | 適合誰 | 遷移成本 | 備註 |
|---|---|---|---|
| JetBrains Rider | 原 Visual Studio 重度使用者、ReSharper 派 | 低 | 方案結構、重構、NuGet、偵錯體驗最接近 VS;付費 |
| VS Code + C# Dev Kit | 已習慣 VS Code、輕量儲存庫 | 很低 | 免費;大型方案索引與重構弱於 Rider |
| VS Code + Cursor | 以 AI 輔助編碼為主 | 低 | 與 VS Code 擴充功能生態相容;Agent 會頻繁呼叫終端機 |
| 完整 Xcode | iOS / macOS / MAUI iOS 目標 | 中 | 僅在做 Apple 平台時必須;體積大、更新頻繁 |
| Parallels / 遠端 Windows | 舊版 WinForms、WPF、特定 VS 外掛 | 高 | 應急可以,不建議當日常主力 |
建議決策:
- 純 ASP.NET Core / API / 主控台 → Rider 或 VS Code 二選一即可。
- .NET MAUI 且要發 iOS → 本機 Rider + Xcode(或 VS Code + Xcode CLI);Android 模擬器在 Mac 上可直接跑。
- 團隊統一 ReSharper 規則 → Rider 授權與公司 JetBrains 帳號對齊。
鍵位與視窗管理:Ctrl 肌肉記憶如何三天切換
Mac 上 ⌘ 取代 Windows 的 Ctrl 負責「儲存、複製、貼上、復原」。對照表建議列印貼在螢幕旁:
| 動作 | Windows (VS) | macOS |
|---|---|---|
| 儲存 | Ctrl+S | ⌘+S |
| 復原 | Ctrl+Z | ⌘+Z |
| 註解行 | Ctrl+K, Ctrl+C | ⌘+/(VS Code/Rider 可改) |
| 偵錯 | F5 | ⌘+↩ 或 F5(需勾選功能鍵) |
| 搜尋全方案 | Ctrl+Shift+F | ⌘+Shift+F |
| 切換應用程式 | Alt+Tab | ⌘+Tab |
視窗管理 是第二痛點:建議安裝 Rectangle(免費)或 Magnet,用 ⌃+⌥+方向鍵 實現 Win11「貼靠版面配置」。多顯示器時,系統設定 → 顯示器 → 獨立顯示器空間,避免全螢幕應用在螢幕間亂跳。
終端機、Shell 與 Docker:從 PowerShell 到 zsh
建議最小套件
brew install starship eza bat fd
# ~/.zshrc 片段
eval "$(starship init zsh)"
alias ls='eza --icons'
alias cat='bat'
- PowerShell 使用者
- 可 `brew install powershell`,但團隊腳本多為 bash/zsh;長期仍建議把個人 alias 遷到 zsh。
- Docker Desktop
- 與 Windows 版類似;Apple Silicon 注意映像架構(
linux/arm64vsamd64)。資料庫容器化後,連線字串裡的localhost在 Mac 上同樣有效。 - 資料庫 GUI
- Azure Data Studio、DBeaver、TablePlus 均有 macOS 版;SSMS 無原生 Mac,用 Azure Data Studio 替代。
.NET MAUI 與 iOS:本機開發、建置分流
MAUI 跨平台專案在 Mac 上的典型分工:
- Rider / VS Code:編輯共用 UI 與業務邏輯。
- 本機模擬器:偵錯 iOS/Android 介面(需 Xcode + Android Studio 模擬器)。
- Release Archive:
dotnet publish觸發 Xcode 工具鏈;CI 上更穩的是固定 macOS 節點。
若你來自 僅 Windows 的 Visual Studio,第一次打 iOS 套件會在簽章、Provisioning Profile 上卡很久——這與 IDE 無關,是 Apple 流程。可參考 Apple Developer — Xcode 支援 核對 SDK 與 macOS 版本對應關係。
首週清單:團隊協作時別漏項
| 類別 | 檢查項 |
|---|---|
| 身分與金鑰 | SSH key 加到 GitHub/GitLab;gh auth login 或公司 SSO |
| 套件來源 | nuget.config 指向內部 feed;dotnet nuget list source |
| 憑證 | Apple 開發憑證匯出 .p12 或在 CI 用 Base64 secret |
| 環境變數 | direnv 或 .env 不入庫;用 1Password / 公司 Vault |
| 格式化 | editorconfig + dotnet format 與 Windows 同事對齊 |
| 預提交 | husky / pre-commit 在 Mac 上同樣可跑 |
Visual Studio 功能在 Mac 上的落點
| VS (Windows) 習慣 | Mac 等價做法 |
|---|---|
| 方案總管 | Rider Solution 視窗 / VS Code Explorer |
| NuGet 套件管理員 UI | Rider NuGet 工具視窗;或 CLI dotnet add package |
| 伺服器總管 / SQL | Azure Data Studio、Rider 資料庫工具 |
| IIS Express | dotnet run Kestrel;Docker 反向代理 |
| WinForms 設計工具 | 無原生 Mac 設計工具 → Windows VM 或重寫為 Web/MAUI |
| 測試總管 | Rider 測試視窗;dotnet test |
| 效能分析器 | dotnet-trace、Instruments(原生)、JetBrains dotTrace |
何時用雲端 Mac,而不是繼續堆本機設定
下面場景在 Visual Studio 遷 Mac 的團隊裡很常見:
- Windows 仍是公司標準桌面,僅行動組需要 macOS 建置 → 租獨享 Mac,Windows 上 SSH 觸發流水線。
- 多 Xcode 版本矩陣(同時維護 iOS 16/17/18 客戶端)→ 本機裝多個 Xcode 占磁碟;雲端按節點拆分更乾淨。
- 短期客戶專案,三個月後要交 iOS 套件 → 日租/週租比買 Mac mini 回本快。
不確定時,在採購第二台「專門建置用 Mac」之前,用日租跑一輪真實儲存庫的 xcodebuild archive,再對比 36 個月 TCO。站內另有 GitHub Actions macOS Runner 節點成本 一文可對照。
收束:遷移的是工作流,不是某一個 IDE
Visual Studio 開發者轉 Mac,首日 搞定 Homebrew、dotnet、Git 與 IDE 選型;首週 統一換行符、金鑰與團隊腳本;首月 把 iOS CI 與重編譯從筆電剝離到穩定 macOS 節點。工具會變(Rider、VS Code、Cursor),但「能編譯、能偵錯、能交付」的節奏不應被打斷。
若你正在設定 MAUI + iOS 流水線,本機保持輕量,把 Archive 交給雲端 Mac——算力用在編譯上,而不是閒置在抽屜裡。
本機寫程式,雲端 Mac 跑 iOS 建置
Visual Studio 遷到 Mac 後,.NET 日常開發可在本機完成;MAUI / 原生 iOS 的 Archive 與 CI 更適合 offload 到獨享雲端 Mac mini。SSH 接入、按日/週/月計費,無需為偶爾建置再買第二台硬體。
不確定環境是否夠用?先用日租跑一輪真實 `xcodebuild`,再決定本機要裝多少 Xcode 元件。
延伸閱讀
常見問題
Mac 上還有 Visual Studio 嗎?
微軟已停止 Visual Studio for Mac(2024 年 8 月結束支援)。.NET 開發者首選 JetBrains Rider 或 VS Code + C# Dev Kit;需要完整 Windows 工具鏈時可保留 Parallels/遠端 Windows 機器,但不建議作為日常主力。
Ctrl 和 Cmd 怎麼快速適應?
系統設定 → 鍵盤 → 勾選「將 F1、F2 等鍵用作標準功能鍵」按需調整;在 Rider/VS Code 裡可安裝 IntelliJ IDEA Keymap 或 Visual Studio Keymap 擴充。前三天刻意用外接鍵盤貼一張 Ctrl→⌘ 對照條,比背快捷鍵表更有效。
.NET 專案在 Mac 上能原樣跑嗎?
ASP.NET Core、主控台、類別庫通常 dotnet restore && dotnet run 即可。注意路徑分隔符、換行符(core.autocrlf)和僅 Windows 的 API(如部分 WMI)。MAUI iOS 目標必須在 macOS + Xcode 環境建置,Android 可在 Mac 上完整開發。
必須裝 Xcode 嗎?
只做 .NET / Web / 後端:不必裝完整 Xcode,裝 Xcode Command Line Tools(xcode-select --install)即可滿足 Git、編譯原生依賴。要做 iOS 模擬器、Archive 或 Swift 混編,才需要完整 Xcode(體積 30GB+)。
終端用 iTerm 還是系統 Terminal?
二者皆可。習慣 PowerShell 的開發者推薦 iTerm2 + Homebrew zsh + starship,並設定 ls→eza、cat→bat 等別名。團隊腳本若依賴 bash,在 shebang 寫 #!/usr/bin/env bash 避免 zsh 語法差異。
什麼時候該租雲端 Mac 而不是本地配環境?
當你需要 7×24 iOS CI、多版本 Xcode 矩陣、或 Windows 主力機 + 偶爾簽名上架時,本地 Mac 可能閒置或配置衝突。按需租用獨享 Mac mini 跑 xcodebuild / 自建 Runner,本機繼續用 Rider 寫程式,比每人配一台建置機更省預算。