This article provides a complete, step‑by‑step guide for developing macOS applications using VirtualBox, Visual Studio, and .NET MAUI from a Windows environment. It covers system preparation, environment configuration, build workflows, testing, packaging, and distribution.
1. Introduction
Developing macOS applications typically requires Apple hardware. However, cross‑platform developers often prefer Windows as their primary workstation. With virtualization and .NET MAUI’s remote build capabilities, it is possible to build and test macOS applications using a macOS virtual machine.
This guide explains how to set up a macOS VM, configure Visual Studio, and build macOS apps using MAUI.
2. System Architecture Overview
Windows Host Machine
- Visual Studio 2022/2025
- .NET SDK + MAUI workload
- Primary development environment
macOS Virtual Machine (VirtualBox)
- macOS operating system
- Xcode command-line tools
- .NET SDK for macOS
- MAUI build host agent
Build Workflow
- Developer writes code in Visual Studio (Windows).
- Visual Studio pairs with the macOS VM.
- macOS VM compiles and packages the macOS app.
- App is tested inside the macOS VM.
3. Preparing the macOS Virtual Machine
3.1 Install VirtualBox
Download and install the latest version of VirtualBox for Windows.
3.2 Create the macOS VM
Recommended configuration:
- CPU: 4–8 cores
- RAM: 8–16 GB
- Storage: 40–80 GB
- Graphics: VBoxSVGA + 128 MB VRAM
- Boot Mode: EFI enabled
- Virtualization: VT‑x/AMD‑V enabled
3.3 Install macOS
Boot the VM using a macOS installer image and complete the installation following the standard macOS setup process.
3.4 Optimize the VM
- Enable shared clipboard.
- Enable shared folders.
- Adjust display resolution.
- Install VirtualBox extensions (if supported).
4. Configuring macOS as a MAUI Build Host
4.1 Install Xcode Command Line Tools
xcode-select --install
4.2 Install .NET SDK for macOS
Download the .NET SDK version that matches your Windows environment from Microsoft and install it on macOS.
4.3 Install MAUI Workload
dotnet workload install maui
4.4 Run MAUI Environment Check
dotnet tool install -g redth.net.maui.check maui-check
This ensures macOS is fully ready for MAUI builds.
5. Configuring Visual Studio on Windows
5.1 Install Required Workloads
In Visual Studio Installer, enable:
- .NET Multi-platform App UI development
- .NET 8/9 SDK
- .NET MAUI workload
5.2 Pair Visual Studio with macOS
- Open Tools → iOS/Mac → Pair to Mac in Visual Studio.
- Enter the IP address of the macOS VM.
- Authenticate using macOS credentials.
Once paired, Visual Studio can build macOS apps remotely.
6. Creating and Building a MAUI macOS Application
6.1 Create a New MAUI Project
In Visual Studio:
File → New → Project → .NET MAUI App
6.2 macOS Target Structure
The macOS-specific code resides in:
/Platforms/MacCatalyst
6.3 Build the macOS App
Select MacCatalyst as the target platform in Visual Studio and click Build or Run. Visual Studio sends the build to the macOS VM, compiles it, and returns the output.
7. Testing the macOS Application
Inside the macOS VM:
- The built app appears in the Applications folder.
- Run it like any native macOS application.
- Use macOS tools such as Console and Activity Monitor for diagnostics.
8. Packaging and Distribution
8.1 Developer Certificates
You need an Apple Developer account. Import your certificates via Keychain Access on macOS.
8.2 App Signing
.NET MAUI handles signing automatically when properly configured with your certificates and profiles.
8.3 Notarization
Notarization is required for macOS distribution:
xcrun notarytool submit <your-app>.pkg --apple-id <id> --team-id <team> --password <app-password>
8.4 Distribution Options
- Direct download (
.pkg or .app).
- Mac App Store (requires full Xcode and App Store Connect workflow).
9. Limitations and Considerations
- VirtualBox does not provide full GPU acceleration (no Metal support).
- Xcode GUI may not run smoothly or reliably in a VM.
- Performance is slower than physical Mac hardware.
- Some App Store submission steps (archive, notarization, Transporter uploads, hardware‑backed signing) may require a real Mac or a cloud Mac service.
Despite these limitations, this setup is excellent for cross‑platform development, training environments, and early-stage macOS development, especially for teams without direct access to Apple hardware.
10. Conclusion
Using VirtualBox, Visual Studio, and .NET MAUI, Windows developers can build and test macOS applications without owning a physical Mac. This workflow provides flexibility, cost efficiency, and a unified development experience across platforms.
While it is not a complete replacement for physical Apple hardware in production scenarios, it is a powerful solution for development, testing, and learning, especially when combined with real Mac or cloud Mac resources for final App Store submission.
Appendix A — Recommended System Specifications
| Component | Minimum | Recommended |
| CPU |
4 cores |
8+ cores |
| RAM |
8 GB |
16–32 GB |
| Storage |
40 GB |
80–120 GB |
| VirtualBox Version |
7.x |
Latest release |
| .NET Version |
.NET 8 |
.NET 9 |
Appendix B — Useful Commands
Check .NET SDKs
dotnet --list-sdks
Check MAUI workloads
dotnet workload list
Run MAUI environment check
maui-check