Visual Studio 2017 for Mac

Last Update: 5/10/2017

We are happy to announce the release of Visual Studio 2017 for Mac. Visual Studio for Mac is a new member of the Visual Studio family, enabling developers on macOS to build apps for mobile, web, and cloud with Xamarin and .NET Core, as well as games with Unity.

Use Visual Studio 2017 for Mac to develop apps for Android, macOS, iOS, tvOS, watchOS, web, and cloud. Code fast, debug, and diagnose with ease, test often, and release with confidence. Use version control, be agile, and collaborate efficiently with this new release!

Download Visual Studio 2017 for Mac

To learn more about other related downloads, see the Downloads page. To learn more about Visual Studio 2017 for Mac, see Mac System Requirements and Mac Platform Targeting and Compatibility.

Feedback

We’d love to hear from you! You can report a problem via the Report a Problem option in either the installer or the Visual Studio IDE itself. You will find the option in the upper right hand corner. You can track your feedback in the Developer Community portal. For suggestions, let us know through the UserVoice site.

What's New in Visual Studio for Mac

Core Functionality

Visual Studio for Mac has everything you would expect from a modern IDE, including a full-featured source editor, code search and navigation, a powerful debugger, a customizable workspace, Git integration, and a rich extension system.

Other features include:

  • Roslyn-based C# IntelliSense, refactoring, analyzers, and code fixes.
  • NuGet-based package management.
  • Visual Studio compatible project format.
  • MSBuild build engine.
  • Integrated unit testing.
  • Support for F# out-of-the-box.

.NET Core Support

.NET Core is a platform for creating applications that you can run on Windows, Linux, and Mac. Visual Studio for Mac provides you with support for loading, creating, running, and debugging .NET Core projects.

In order to run .NET Core projects the .NET Core SDK should be downloaded and installed.

.NET Core support includes:

  • C# and F# IntelliSense.
  • .NET Core project templates for console, library, and web applications.
  • Full debugging support, including breakpoints, call stack, watch window, etc.
  • NuGet PackageReferences and MSBuild-based restore.
  • Integrated unit testing support for running and debugging tests with the Visual Studio Test Platform that is included with the .NET Core SDK.
  • Migration from old project.json format.

Web Tooling

Visual Studio for Mac adds new web tooling support for HTML, CSS and JSON files.

HTML

  • New HTML template.
  • Improved smart indent and formatting.
  • Improved colorization.
  • Improved Intellisense.
  • Code folding (must be enabled).
  • Unminify command.
  • Improved Code Templates (snippets).
  • Surround selection with <div>.
  • Option up/down moves selected text up/down.

CSS

  • Improved smart indent and formatting.
  • Improved colorization.
  • Improved IntelliSense.
  • Code folding.
  • Many Code Templates (snippets).
  • Option up/down moves selected text up/down.

JSON

  • Schema picker with access to schemastore.org.
  • Validation from schema.
  • IntelliSense from schema.
  • Improved smart indent and formatting.
  • Improved colorization.
  • Comment/uncomment.
  • Quote injection and brace matching.
  • Option up/down moves selected text up/down.

Xamarin

First-class support for Xamarin allows you to develop rich native experiences for Android, macOS, iOS, tvOS, and watchOS. Xamarin.Forms cross-platform applications help you share XAML-based UI code between Android, iOS, and macOS without limiting access to native functionality.

This includes:

  • Building, deployment, debugging, and profiling.
  • Drag-and-drop UI designers for iOS and Android.
  • Live preview for Xamarin Forms.
  • .NET Standard compatible framework.
  • Bindings to native APIs.

Multiplatform App Templates

The Multiplatform Xamarin.Forms App and the Native App project templates now provide you a quick way to create a multiplatform mobile app and its cloud backend.

These templates create multiple projects: a Xamarin.iOS app project and a Xamarin.Android app project that share code via a shared project, and a .NET Core Web API project that implements a back-end service for the apps (Figure 1).

Debugging with .NET Core

(Figure 1) Debugging with .NET Core

Publishing ASP.NET Core Web Apps to Azure App Services

It is possible to publish your ASP.NET Core web apps to Azure App Services (Figure 2).

Publish to Azure content menu

(Figure 2) Publish to Azure Content Menu

To publish your web app, select the Publish | Publish to Azure command from the Solution Pad or from the Project menu. Then choose the App Service you wish to deploy to, or create a new Azure App Service (Figure 3). Output from the publishing will be logged to a Publish output pad and a publishing profile will be created under Properties > PublishProfiles in the project.

Publish a new app service

(Figure 3) Publish a New App Service

All publish profiles defined in the project will be shown as options within the Publish menu so that you can deploy again without having to select the App Service a second time.

Multi-Process Debugging

Projects have Project Run Configurations which specify options and arguments for running your project. A dropdown in the toolbar lets you view and change the current active Run Configuration.

Visual Studio for Mac's Solution Run Configurations window allows multiple projects to be launched at once. You can create solution run configurations in the Solution Options dialog. This is very useful for debugging how a mobile app interacts with its backend service.

TextMate Bundles

Visual Studio for Mac has support for TextMate language bundles, which you can use to add:

  • Editor color themes.
  • Code snippets.
  • Grammars for new languages, enabling highlighting, and basic IntelliSense.

You can add TextMate bundles in Preferences > Text Editor > Language Bundles.

iOS

Audio Unit Wizard

The new Audio Unit Extension wizard (Figure 4) adds 3 options to customize the Audio Unit project template's plist.

  • Audio Unit Type
    • Instruments
    • Generator
    • Effect
    • Music effect
  • Subtype Code: has to be 4 characters exactly.
  • Manufacturer Code: has to be 4 characters exactly.

Audio Unit Wizard

(Figure 4) Audio Unit Wizard

watchOS Extension Wizard

In Xcode 8.3, Apple introduced watchOS extensions (similar to the iOS ones), starting with the Intents Extension (Siri).

The watchOS Extension wizard (Figure 5) has been updated to support watchOS extensions, and we now have a dedicated Intents Extension template.

watchOS extension wizard

(Figure 5) watchOS Extension Wizard

Other Improvements and Bug Fixes
  • We now handle Deprecated and Obsoleted attributes in autocompletion window. This allows Xamarin.iOS obsoleted and deprecated APIs to be shown as struck through.
  • We show a progress bar when deploying to device. This is especially useful for watchOS. (Requires Xamarin.iOS 10.5.0.323+).
  • We use known OS versions from Xamarin.iOS to populate the deployent target dropdowns.
    Two advantages are that we can give you the exact minimum version for each App Extensions type, as well as avoid showing OS versions, based on Xcode, that Xamarin.iOS does not yet support.

Mac/iOS API Issue Analyzer

  • Fix duplicated marker when analyzer is triggered.
  • Get the "message" (piece of information in the framework explaining why the API is deprecated/obsolete) from the attribute and append that information to the different availability messages.
  • Updated all availability messages to improve clarity.
  • Improved clarity by using the symbol's name in the availability message, changed from:
    API Usage Issue: this API requires iOS 10.0 or later
    to:
    'MyMethod' is only available on iOS 10.0 or newer

Android

  • New SDK Manager

Visual Studio for Mac includes its own Android SDK manager (Figure 6).

Android SDK Manager window

(Figure 6) Android SDK Manager

  • Deploying your project to device or emulator is now done via the /t:Install msbuild target. Previously Visual Studio for Mac would use its own internal logic for deploying applications to devices but now it uses same common targets that you can employ from Terminal, or that are used in Visual Studio on Windows. One of the benefits of this is that there are now better logs available to diagnose deployment issues.

  • The default for new binding projects is now class-parse. It can parse Java bytecode directly wihout the need for a JVM. You now have the ability to extract parameter names from Java bytecode which contains debug symbols. For example, bytecode compiled with javac -g. class-parse also doesn't "skip" classes which inherit from, or contain, members of unresolvable types.

Accessibility

  • This version of Visual Studio for Mac contains support for assistive technologies such as Voice Over. Many parts of the user interface, such as the editor and solution explorer, have been made accessible through these technologies. However, it is still a work in progress and futher improvements will be made in coming releases.