← Назад к блогу

Visual Studio на Mac на практике: чеклист первого дня, выбор IDE и перенос раскладки

Visual Studio на Mac на практике: чеклист первого дня, выбор IDE и перенос раскладки

Выдали 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 / удалённый WindowsLegacy 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/arm64 vs amd64). После контейнеризации БД localhost в строках подключения на Mac работает так же.
GUI для БД
Azure Data Studio, DBeaver и TablePlus есть для macOS; нативного SSMS для Mac нет — замена Azure Data Studio.

.NET MAUI и iOS: локальная разработка, разделение сборок

Типичное разделение для кроссплатформенного MAUI на Mac:

  1. Rider / VS Code: правка общего UI и бизнес-логики.
  2. Локальные симуляторы: отладка UI iOS/Android (нужны Xcode + эмулятор Android Studio).
  3. Release Archive: dotnet publish запускает цепочку Xcode; на CI надёжнее фиксированный macOS-узел.

Если вы с Visual Studio только на Windows, первый iOS-пакет надолго застрянет на подписи и Provisioning Profile — это процесс Apple, не выбор IDE. Сверьтесь с Apple Developer — поддержка Xcode по соответствию SDK и версии macOS.

Гибридный workflow: MacBook 16–24 ГБ для ежедневного кода; ночные полные Archive и мульти-веточный CI — на облачный Mac mini, чтобы вентилятор не крутился всю ночь и DerivedData не забивал диск. Скрипты по SSH; при проблемах с сертификатами — VNC, см. центр помощи.

Чеклист первой недели: не упустить в командной работе

Категория Проверка
Идентичность и ключи 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
Обозреватель серверов / SQLAzure Data Studio, инструменты БД в Rider
IIS Expressdotnet 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 с алиасами lseza. Для bash-скриптов: #!/usr/bin/env bash в shebang.

Когда арендовать облачный Mac вместо локальной настройки?

При круглосуточной iOS CI, нескольких версиях Xcode или Windows как основной машине с редкой подписью. Выделенный Mac mini для xcodebuild/runner—дешевле, чем build-Mac на каждого.

Ограниченное предложение →