Выдали MacBook, а вы жмёте <kbd>Ctrl+S</kbd> и ищете решение в проводнике—мышечная память переносится труднее SDK. Чеклист: компиляция в день один, PR на неделе, CI в месяц.
Если вы только что получили MacBook и по привычке ищете Visual Studio в «меню Пуск» или двойным щелчком открываете .sln в проводнике — значит, сложнее всего переносить не SDK, а мышечную память. Эта статья для разработчиков .NET, C++ или full-stack, которые годами работали в Visual Studio или Visual Studio Code на Windows. По этапам «собрать в первый день, PR на первой неделе, CI в первый месяц» — воспроизводимый чеклист окружения; в конце — когда выгоднее отдавать iOS-сборки на облачный 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; избегает diff по переводам строк во всём репо для коллег на Windows
Подводный камень: если репозиторий, клонированный с Windows, показывает «все файлы modified», в девяти случаях из десяти виноваты
core.autocrlfи.gitattributes. Согласуйте правила команды в первый день — дешевле, чем потом чистить историю.
Выбор IDE: Rider, VS Code или оставить Windows?
Microsoft прекратила поддержку Visual Studio for Mac (08/2024). Реальные варианты:
| Инструмент | Кому подходит | Стоимость миграции | Примечания |
|---|---|---|---|
| JetBrains Rider | Тяжёлые пользователи Visual Studio, поклонники ReSharper | Низкая | Структура решения, рефакторинг, NuGet, отладка ближе всего к VS; платный |
| VS Code + C# Dev Kit | Уже на VS Code, лёгкие репозитории | Очень низкая | Бесплатно; индексация и рефакторинг слабее Rider на больших решениях |
| VS Code + Cursor | Приоритет — код с ИИ | Низкая | Совместим с экосистемой расширений VS Code; Agent часто вызывает терминал |
| Полный Xcode | Цели iOS / macOS / MAUI iOS | Средняя | Нужен только для платформ Apple; большой объём, частые обновления |
| Parallels / удалённый Windows | Legacy 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. На нескольких мониторах: Системные настройки → Мониторы → У каждого монитора отдельные Spaces, чтобы полноэкранные приложения не прыгали между экранами.
Терминал, 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 и бизнес-логики.
- Локальные симуляторы: отладка UI iOS/Android (нужны Xcode + эмулятор Android Studio).
- Release Archive:
dotnet publishзапускает цепочку Xcode; на CI надёжнее фиксированный macOS-узел.
Если вы с Visual Studio только на Windows, первый iOS-пакет надолго застрянет на подписи и Provisioning Profile — это процесс Apple, не выбор IDE. Сверьтесь с Apple Developer — поддержка Xcode по соответствию SDK и версии macOS.
Чеклист первой недели: не упустить в командной работе
| Категория | Проверка |
|---|---|
| Идентичность и ключи | SSH key в GitHub/GitLab; gh auth login или корпоративный SSO |
| Источники пакетов | nuget.config на внутренний feed; dotnet nuget list source |
| Сертификаты | Экспорт dev-сертификата Apple в .p12 или Base64 secret в CI |
| Переменные окружения | direnv или .env не в репозитории; 1Password / корпоративный vault |
| Форматирование | editorconfig + dotnet format в согласии с коллегами на Windows |
| Pre-commit | husky / pre-commit на Mac тоже работают |
Где на Mac оказываются привычки Visual Studio
| Привычка VS (Windows) | Эквивалент на Mac |
|---|---|
| Обозреватель решений | Окно Solution в Rider / Explorer в VS Code |
| UI диспетчера пакетов NuGet | Окно NuGet в Rider; или CLI dotnet add package |
| Обозреватель серверов / SQL | Azure Data Studio, инструменты БД в Rider |
| IIS Express | dotnet run Kestrel; обратный прокси Docker |
| Конструктор WinForms | Нет нативного конструктора на Mac → VM Windows или переписать в Web/MAUI |
| Обозреватель тестов | Окно тестов Rider; dotnet test |
| Профилировщик | dotnet-trace, Instruments (нативный), JetBrains dotTrace |
Когда брать облачный Mac, а не наращивать локальную конфигурацию
Типичные сценарии у команд, переезжающих с Visual Studio на Mac:
- Windows остаётся корпоративным стандартом, macOS-сборки нужны только мобильной группе → аренда выделенного Mac, запуск pipeline по SSH с Windows.
- Матрица версий Xcode (параллельная поддержка iOS 16/17/18) → несколько Xcode съедают диск локально; разделение узлов в облаке чище.
- Краткий клиентский проект, iOS через три месяца → посуточная/понедельная аренда окупается быстрее покупки Mac mini.
Если сомневаетесь — до покупки второго Mac «только для сборок» прогоните xcodebuild archive на реальном репозитории с посуточной арендой и сравните TCO за 36 месяцев. На сайте также есть стоимость узлов GitHub Actions macOS Runner.
Итог: мигрируется workflow, а не один IDE
Разработчик Visual Studio на Mac: день 1 — Homebrew, dotnet, Git и выбор IDE; неделя 1 — переводы строк, ключи и командные скрипты; месяц 1 — отделить iOS CI и тяжёлые сборки от ноутбука на стабильные macOS-узлы. Инструменты меняются (Rider, VS Code, Cursor), но ритм собрать, отладить, отдать не должен прерываться.
Если настраиваете pipeline MAUI + iOS — держите локальную машину лёгкой, Archive отдайте облачному Mac: мощность — в компиляцию, а не в ящик стола.
Код локально, iOS-сборка на облачном Mac
После перехода с Visual Studio ежедневный .NET остаётся на MacBook; Archive MAUI / нативного iOS и CI лучше на выделенном облачном Mac mini. SSH, посуточная/понедельная/помесячная оплата—вторая машина для редких сборок не нужна.
Не уверены, хватит ли среды? Прогоните реальный `xcodebuild` на суточной аренде, затем решите объём локального Xcode.
Дополнительное чтение
Частые вопросы
Есть ли Visual Studio на Mac?
Microsoft прекратила Visual Studio for Mac (поддержка до августа 2024). Для .NET — JetBrains Rider или VS Code + C# Dev Kit; Parallels/удалённый Windows только для legacy Windows-инструментов—not как основная машина.
Как быстро привыкнуть к Ctrl и Cmd?
Системные настройки → Клавиатура; в Rider/VS Code — IntelliJ IDEA Keymap или Visual Studio Keymap. Три дня держите шпаргалку Ctrl→⌘ на внешней клавиатуре—эффективнее зубрёжки.
Запустятся ли .NET-проекты на Mac как есть?
ASP.NET Core, консоль и библиотеки обычно через dotnet restore && dotnet run. Следите за разделителями, переводами строк (core.autocrlf) и API только для Windows (WMI). MAUI iOS требует macOS + Xcode; Android полностью на Mac.
Нужен ли полный Xcode?
Только .NET / web / backend: нет—достаточно Xcode Command Line Tools (xcode-select --install) для Git и нативных зависимостей. Полный Xcode (30 ГБ+) для симулятора iOS, Archive или Swift.
iTerm или Terminal?
Оба подходят. Для PowerShell: iTerm2 + Homebrew zsh + starship с алиасами ls→eza. Для bash-скриптов: #!/usr/bin/env bash в shebang.
Когда арендовать облачный Mac вместо локальной настройки?
При круглосуточной iOS CI, нескольких версиях Xcode или Windows как основной машине с редкой подписью. Выделенный Mac mini для xcodebuild/runner—дешевле, чем build-Mac на каждого.