MacBook을 받았는데도 <kbd>Ctrl+S</kbd>로 저장하고 탐색기에서 솔루션을 찾는다면—근육 기억이 SDK보다 이전이 어렵습니다. 첫날 컴파일, 첫주 PR, 첫달 CI 단계별 체크리스트입니다.
MacBook을 막 받았는데도 습관적으로 「시작 메뉴」에서 Visual Studio를 찾거나 탐색기에서 .sln을 더블클릭하려 한다면——가장 어려운 이주 대상은 SDK가 아니라 근육 기억이라는 뜻입니다. 이 글은 Windows에서 Visual Studio / Visual Studio Code를 오래 쓴 .NET, C++, 풀스택 개발자를 대상으로, 「첫날 컴파일, 첫 주 PR, 첫 달 CI」 세 단계에 맞춘 재현 가능한 환경 체크리스트를 제시하고, 마지막에 iOS 빌드를 클라우드 Mac으로 넘길 시점을 설명합니다.
첫날 2시간: 터미널, 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」가 뜨면 9할은
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 근육 기억 3일 전환
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 스냅 레이아웃을 구현. 다중 모니터에서는 시스템 설정 → 디스플레이 → 디스플레이마다 별도 Spaces로 전체 화면 앱이 화면 간에 뛰는 것을 방지.
터미널, 셸, 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) 주의. DB 컨테이너화 후 연결 문자열의localhost는 Mac에서도 동일하게 동작. - 데이터베이스 GUI
- Azure Data Studio, DBeaver, TablePlus 모두 macOS판 있음; SSMS는 네이티브 Mac 없음——Azure Data Studio로 대체.
.NET MAUI와 iOS: 로컬 개발, 빌드 분리
Mac에서 MAUI 크로스플랫폼 프로젝트의 전형적 역할 분담:
- Rider / VS Code: 공유 UI와 비즈니스 로직 편집.
- 로컬 시뮬레이터: iOS/Android UI 디버그(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 DB 도구 |
| 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 여러 개는 디스크 소모; 클라우드 노드 분리가 깔끔.
- 단기 고객 프로젝트, 3개월 뒤 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에서 이전 후 .NET 일상 개발은 MacBook에서; MAUI/네이티브 iOS Archive와 CI는 전용 클라우드 Mac mini에 오프로드가 적합. SSH, 일/주/월 과금—가끔 빌드용 두 번째 기기 불필요.
환경이 충분한지 모르겠다면? 일일 임대로 실제 `xcodebuild`를 돌려 본 뒤 로컬 Xcode 설치 범위를 결정하세요.
추가 읽기
자주 묻는 질문
Mac에 Visual Studio가 아직 있나요?
Microsoft는 Visual Studio for Mac 지원을 종료했습니다(2024년 8월). .NET 개발자는 JetBrains Rider 또는 VS Code + C# Dev Kit을 권장합니다. Windows 전용 도구가 필요하면 Parallels/원격 Windows는 가능하나 일상 주력으로는 비추천.
Ctrl과 Cmd에 빨리 적응하려면?
시스템 설정 → 키보드에서 기능키 조정; Rider/VS Code에 IntelliJ IDEA Keymap 또는 Visual Studio Keymap 설치. 처음 3일은 외장 키보드에 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 Command Line Tools(xcode-select --install)로 Git과 네이티브 의존성 충분. iOS 시뮬레이터, Archive, Swift 혼합 시 전체 Xcode(30GB+) 필요.
iTerm vs Terminal?
둘 다 가능. PowerShell 사용자는 iTerm2 + Homebrew zsh + starship과 ls→eza 등 별칭 추천. bash 스크립트는 #!/usr/bin/env bash로 shebang 명시.
언제 클라우드 Mac을 임대해야 하나요?
24/7 iOS CI, 여러 Xcode 버전, Windows 주력 + 가끔 서명이 필요할 때. 전용 Mac mini로 xcodebuild/Runner를 돌리고 로컬은 Rider—개발자마다 빌드 Mac을 두는 것보다 경제적.