Visual Studio Enterprise 2017 For Mac

By Giles Davies, Visual Studio Technical Specialist at Microsoft

This is an updated version of the 6 differences between Visual Studio 2015 Enterprise and Visual Studio 2015 Professional article which now includes new functionality added in 2017.

Visual Studio 2017 Enterprise provides a wide range of functionality and therefore I’ll group the capabilities into five areas:

Visual Studio 2017 for Mac will install and run on the following operating systems: macOS Sierra 10.12: Community, Professional, and Enterprise. Mac OS X El Capitan 10.11: Community, Professional, and Enterprise*. To activate Visual Studio for Mac you just need to log in with an account that holds a Visual Studio (previously MSDN) subscription via Visual Studio -> Account in the menu bar. Currently it is not possible to use a product key to activate Visual Studio for Mac. By Giles Davies, Visual Studio Technical Specialist at Microsoft. This is an updated version of the 6 differences between Visual Studio 2015 Enterprise and Visual Studio 2015 Professional article which now includes new functionality added in 2017. Visual Studio 2017 Enterprise provides a wide range of functionality and therefore I’ll group the capabilities into five areas.

  • Currently, there is no way to utilize a product key to enable Professional or Enterprise entitlements for Visual Studio for Mac. To use Visual Studio Enterprise for Mac or Visual Studio Professional for Mac you must have a relevant subscription and be signed in to the IDE.
  • To install Visual Studio 2017 for Mac, see Visual Studio 2017 Downloads. For information about everything that's new in this release, see the Visual Studio for Mac 2017 release notes. See also Visual Studio 2017 for Mac Platform Targeting and Compatibility.
  1. Code quality
  2. Testing
  3. Build and release
  4. Xamarin
  5. Subscription benefits

Let’s take a look at what Enterprise provides in each of those areas, over and above what Professional offers. If you want to look for specifically what’s new in Enterprise in 2017 (i.e. not in 2015 Enterprise) then the short list is Live Unit Testing, Live Architectural Dependencies, Packages, Build and Release Pipelines, Xamarin and subscription benefits. These are all introduced below.

Code Quality

There are a range of tools to help developers write the highest quality code, and that build on the core unit testing capabilities in Professional:

IntelliTest

Mac

IntelliTest was introduced in 2015 and analyses your source code and then creates unit tests to achieve 100% code coverage for each path through that code.

That means that you can get a lot more of your code covered by unit tests for less effort, helping you to add unit tests to code that doesn’t have any and making it easy to keep on top of creating unit tests for new code. It doesn’t mean that you’ll never write a unit test again, but I’d consider this a means of getting the core unit tests generated for you, allowing you to concentrate on specific tests and scenarios based on your domain knowledge.

You can tailor it to allow exceptions, override object creation and much more.

It will work with MS Test (including MS Test v2 now in Visual Studio 2017), NUnit, xUnit and any other testing framework that provides an adapter for use in Visual Studio. It is currently limited to C#.

Here’s a 35 min video walking through IntelliTest.

Live Unit Testing (new for 2017)

What’s the earliest point that your code can be tested with unit tests? How about as you’re typing? That’s what Live Unit Testing provides as well as line level coverage and test outcome all shown in the editor as you work. It also works whilst debugging.

Read about it or watch a 10 min video.

Fakes

Microsoft Fakes has been around for a while but it’s perhaps an overlooked Enterprise capability that allows you to isolate parts of your overall solution to help with unit testing. Fakes splits into:

  • Stubs, which allow you to mock parts of your application (e.g. a component or service) to make unit testing easier or possible. Read more here.
  • Shims, which allow you to divert calls outside your application to your own implementation. An example might be to shim system calls to get the date in order to test for specific scenarios (e.g. a leap year). Read more here.

Code Maps

Code Maps allows you to understand and explore your source code visually.

Why is that useful? It allows you to build your understanding of the relationships between different aspects of your code without needing to read the source. Code Maps allows you to drill from assemblies down to namespaces, classes, methods and down to the underlying source, as well as filter out those elements you’re not interested in, such as test code or system assemblies.

You can add your own annotations and groupings, rearrange the diagrams and share them with others, via email, saved as diagrams or directly within Visual Studio. A Professional user can view CodeMaps but not author them.

I see this as useful for people new to a project, or when you’re going to be making changes to code that you aren’t familiar with or perhaps can’t remember.

One often overlooked capability is that you can also debug using Code Maps and this can really help in not having to keep track in your head of where you are in the code base whilst debugging.

Code Maps work for .NET and C/C++. For a demo here’s a 9 min overview video and some more documentation.

Live Architectural Dependencies (revised for 2017)

Architecture layer diagrams have been in Visual Studio for quite a while, but they’ve now been reengineered to take advantage of Roslyn and thereby make them much more effective. You now get live, as you type code, warnings and errors, allowing you to enforce architectural rules across your codebase.

Here’s how I think of the benefits; it’s quite possible to have code that compiles, passes unit tests, passes functional tests and is in use in production, but still exhibits poor architecture such as incorrect dependencies between components/tiers/services etc.. This can result in issues in the future. Live Architecture Dependency allows you to stop this happening at the earliest possible time: as the problematic code is being typed.

From a licensing perspective this requires an Enterprise license to author, but any edition to pick up and enforce the rules.

10 min Live Architectural Dependency video.

IntellITrace

IntelliTrace is a historical or post-mortem debugging technology and essentially helps to address the “I can’t reproduce it” problems, typically across dev and test environments. It was introduced in 2010, so it’s not new, and can be used across dev, test and production environments.

A simple example of its use is:

A tester finds a bug in the test environment. The tester repros the bug with IntelliTrace collection enabled, and the bug raised then includes the IntelliTest log file. That log file includes the calls and events from the test environment.

The developer opens the bug and the IntellITrace log file in Visual Studio Enterprise, and can view the exceptions raised, and for each of those exceptions see the stack trace. The developer can choose to debug any of those exceptions, in which case Visual Studio will go into debug mode with the execution halted at the line of code that threw the chosen exception. The developer can then step both forward and backwards through the source code to understand what happened.

Key advantage – the developer doesn’t need to work out how to reproduce the conditions to replicate the bug in order to then start understanding how to fix it. IntelliTrace allows the developer to debug as if attached for debug, even though this takes place later and on a different environment. For a problem where it’s environment based (e.g. can repro in test but not in dev) this can save a lot of time.

This requires .NET 2.0 or higher C# or VB.NET and works in ASP.NET, Microsoft Azure, Windows Forms, WCF, WPF, Windows Workflow, SharePoint and 64-bit apps.

You don’t need Enterprise to collect IntelliTrace data, but you do need Enterprise to use it.

There’s a lot more to it, here’s the MSDN documentation and a 12 min overview video.

Build and Release (new for 2017)

Whilst the continuous integration and continuous deployment capabilities of Team Foundation Server and Visual Studio Team Services have been around prior to 2017, there are two related areas that Visual Studio 2017 Enterprise gives you access to without additional licensing:

Packages. Package management provides a private NuGet, NPM or Maven repository for publishing and sharing code. Read about package management. This has been added as an extension and requires additional licenses unless you have Enterprise, in which case it’s included.

Build and release pipelines. The way that build and release is licensed has changed to a model that licenses concurrency. You get one pipeline free, and if you want more than one build and/or release to be running at the same time then you need to purchase pipelines. Here’s a good explanation about pipelines but the key point here is that each Visual Studio 2017 Enterprise license gives you one extra pipeline for both TFS and VSTS.

Testing Tools

To summarise simply, you get all the testing tools in Enterprise. In other words:

  • Test case management
  • Manual testing
  • Exploratory testing
  • Automated functional testing
  • Load and performance testing

Enterprise provides test case management, manual and exploratory testing by including Microsoft Test Professional as part of the Enterprise edition. I won’t cover that now but you can find out more here.

What’s unique to Enterprise are automated functional testing and load and performance testing.

The Visual Studio automated functional testing tool is Coded UI. As the name suggests this creates automated tests (i.e. including automated verification) and records them as code – either C# or VB.NET. You can record them as you perform actions, or create tests by reusing test methods at a code level. You can also promote manual tests to create the automated test and then add verifications.

Coded UI allows you to build regression suites that drive the UI of the application under test (web and thick clients), and to run those regression tests remotely, such as on a test environment and even as part of the release management capability discussed above. Note that executing a CodedUI test remotely doesn’t require an Enterprise edition, so other users can run them.

For more info on CodedUI here are the docs.

Load and Performance Testing has been around for a long time in Visual Studio, and has evolved over the years. The core capabilities are the same; create a scenario that tests performance using a certain number of virtual users running a set of tests over a given time. You can factor in network conditions (e.g. 10% of the users are on a very poor network connection, what’s their experience?) and collect system performance counter information (CPU, memory, disk I/O and much more):

Here’s a walkthrough of creating and running a load test.

The latest changes have included the ability to choose to use Azure to generate the load i.e. you don’t need to find the hardware and set up the test rig. That’s without making any changes to the load test, just a radio button choice between the cloud and on-premise. Using the cloud means you can also choose where the load is coming from using the Azure data centers:

More details on cloud load testing and a 10 min video.

Xamarin (new in 2017)

Visual Studio 2017 (all editions) include the Xamarin development tools for creating native cross-platform mobile apps with C#. Visual Studio 2017 Enterprise adds some extra capabilities around Xamarin:

  • Embedded Assemblies: protects embedded native code.
  • Live Inspection (Preview). Allows you to programmatically interact with your live running app in real time on devices and emulators. This enables rapid design iteration and experimentation without needing to compile, build and deploy each time that changes are made.
  • Xamarin Profiler (Preview). Profiler is a full-featured profiling tool made specifically for Xamarin apps, helping developers identify memory and performance problems.
  • Xamarin Test Recorder. Record automated tests for your app.
  • 25% discount off Xamarin Test Cloud: this allows you to deploy your app and run automated tests against a range of real devices (over 2500 phones and tablets currently).

Visual Studio Subscriptions (MSDN) (revised for 2017)

Last but not least are the extra benefits (over Professional) that you get from Enterprise in Visual Studio Subscriptions (what used to be called MSDN). I’d highlight:

  • More Azure credit (currently £115 per month with Enterprise) so you can use more Azure services for free each month, such as running virtual machines.
  • An unrestricted set (i.e. a full subscription) of Pluralsight courses for a year (rather then the curated list previously provided).
  • Redgate ReadyRoll. This is an extension that provides continuous deployment support for your databases in VSTS.
  • PowerBI Pro.
  • Office 365 developer subscription for 25 users.
  • Office Professional production license.
  • Dev and Test downloads for SharePoint, Exchange, Dynamics, Office production use and PowerBI.
  • 2 collections of 10 courses of Microsoft e-learning.
  • 4 support incidents.

More details in the subscription editions overview.

Hopefully this gives you a flavour of the differences and if you’re in the position of either deciding which edition to get, or having become entitled to Enterprise from an upgrade, then you’ll have a better idea of the key additional capabilities.

Code faster. Work smarter. Create the future with the best-in-class IDE.

Write code with fewer errors

Type variables quickly and accurately, using IntelliSense code suggestions if you get stuck. Maintain speed no matter the complexity as you navigate to any file, type, member, or symbol declaration you need. Make quick improvements to your code using light bulbs that suggest actions such as renaming a function or adding a parameter.

Learn more about your code

CodeLens helps you easily find important insight such as what changes have been made to your code, the impact of those changes, and whether your method has been unit tested. See references, authors, tests, commit history, and other essential information at a glance.

Quickly find and fix your bugs

Visual Studio lets you pause code execution the moment you want to inspect a bug, using the breakpoint and method you need. If you’ve taken one step too far or encountered an unexpected change, you can step back to any specific line of code–no need to restart your session or recreate your state.

Work efficiently

Easily navigate and organize your test suite so you can analyze how much code you’re testing and see results instantly. Immediately know the impact of every change you make, letting advanced features test code as you type. Fix errors as soon as they happen and see if new changes are covered by existing tests.

Share more than screens

Lead your team with quick and natural collaboration using Live Share to edit and debug together in real time, no matter the language or platform. Personalize your session with access controls and custom editor settings that enforce consistent coding styles for everyone.

Build for the cloud

Get up and running quickly using templates for common application types and local Azure emulators–no need for an Azure account. You can also provision application dependencies such as Azure SQL databases and Azure Storage accounts without leaving Visual Studio. Quickly diagnose any issues using Visual Studio’s remote debugger, which attaches directly to your application.

Install only the tool and component bundles you need for development in Visual Studio

Visual studio 2017 for mac

ASP.NET & web development

Build web applications using ASP.NET Core, ASP.NET (.NET Framework), HTML/JavaScript, and Containers including Docker support

Description

Maximize your productivity developing .NET web applications using ASP.NET Core, standards-based technologies like HTML, and JavaScript.

Development applications

– Website using Razor Pages in ASP.NET Core
– Web API with ASP.NET Core MVC
– Real-time web apps with ASP.NET Core SignalR

Components

– .NET Framework 4.x development tools
– .NET Core 2.1 development tools
– ASP.NET and web development tools
– .NET profiling tools
– Container development tools
– Cloud tools for web development
– IntelliSense, code navigation, and refactoring for C#, Visual Basic, and F#

Learn more about ASP.NET & web development

Azure

Azure SDKs, tools, and projects for developing cloud apps, creating resources, and building Containers including Docker support

Description

Easily build, test, deploy, and manage scalable apps and services on the Microsoft cloud. Install to view resources in Cloud Explorer, create resources using Azure Manage tools, build applications for Azure Web and Cloud Services, and perform big data operations using Azure Datalake tools.

Development applications

– Publish an ASP.NET Core app to Azure in the IDE
– Test performance of a cloud service
– Debug a published Azure cloud service

Components

– Azure development prerequisites
– .NET Framework 4.x development tools
– .NET Core 2.1 development tools
– ASP.NET and web development tools
– Container development tools

Learn more about Azure

Python

Editing, debugging, interactive development, and source control for Python

Description

Support for building Python web applications using familiar frameworks including Django and Flask, and Data Science applications with built-in Conda and IPython support.

Development applications

– Python applications
– Django web apps
– Flask web apps

Components

– Support for CPython, virtualenv, venv, and conda environments
– Rich editing, IntelliSense, and code comprehension
– Interactive (REPL) environment window
– Support for Python in open folder workspaces
– Project and item templates to simplify new project creating process
– Profiling and unit testing tools
– Manage Conda environments using Miniconda
– Live Share

Learn more about Python

Node.js development

Build fast and scalable applications using Node.js, a server-side JavaScript runtime environment

Description

Easily build Node.js applications using web frameworks like Express and front-end frameworks like React.

Development applications

– Node.js app with Express
– Node.js app with React
– Publish Node.js app to Azure cloud

Components

– Project templates
– IntelliCode
– npm integration
– Interactive (REPL) environment window
– Local and remote advanced debugging
– Profiling tools to track performance
– Unit testing support
– TypeScript integration

Learn more about Node.js

.NET desktop development

Build WPF, Windows Forms, and console applications using C#, Visual Basic, and F#

Description

Create Windows-based applications by using Windows Presentation Foundation or by using Windows Forms. Also create web applications using the .NET Framework, and client applications for computers or devices that you make available through the Microsoft Store.

Development applications

– Windows Presentation Foundation (WPF)
– Windows Forms

Components

– .NET desktop development tools
– .NET Framework 4.x development tools
– .NET profiling tools
– C# and Visual Basic language support
– Entity Framework 6 tools
– IntelliTrace
– Just-In-Time debugger
– Live Unit Testing
– Live Share

Learn more about .NET desktop development

Desktop development with C++

Build modern C++ apps for Windows using the tools of your choice, including MSVC, Clang, CMake, or MS Build

Description

C++ desktop apps run in a console or in a window. Take advantage of the powerful MSVC compiler and libraries toolset or bring your own build tools to do the job.

Development applications

– Traditional Windows Desktop applications using C++
– Windows console applications using C++

Components

– MSVC x64/x86 build tools
– Visual C++ core desktop features
– C++ profiling tools
– Windows 10 SDK
– C++ CMake tools for Windows
– Test adapter for Google Test
– Test adapter for Boost.Test
– IntelliTrace
– Just-In-Time debugger
– Live Share

Learn more about Desktop development with C++

UWP development

Create applications for the Universal Windows Platform with C#, VB, or optionally C++

Description

Build applications that target Windows Desktop, Xbox, HoloLens, SurfaceHub, and even Windows 10 IoT.

Development applications

– Universal Windows Platform (UWP)

Components

– Blend for Visual Studio
– .NET Native and .NET Standard
– NuGet package manager
– Universal Windows Platform tools
– Windows 10 SDK

Learn more about UWP development

Mobile development with .NET

Build cross-platform applications for iOS, Android, or Windows using Xamarin

Description

Build fully-native iOS, Android, and Universal Windows Platform apps using C# and XAML. Xamarin gives you full access to platform APIs and features using a single language and allows you to have a shared codebase with other .NET platforms.

Development applications

– Build cross-platform apps using Xamarin.Forms
– Access native features with the Xamarin.Essentials API

Components

– Xamarin
– .NET Framework4.x development tools
– C# and Visual Basic language support
– Android SDK setup

Learn more about Mobile development with .NET

Mobile development with C++

Build cross-platform C++ apps for iOS or Android

Development applications

– Android Native App
– Import an XCode Project
– OpenGL ES application on Android and iOS

Components

– Visual Studio C++ core features
– Android SDK setup
– Android NDK
– Apache Ant
– C++ Android development tools

Learn more about Mobile development with C++

Game development with Unity

Create 2D and 3D games with Unity, a powerful cross-platform development environment

Description

Create games and interactive content and publish to 21 platforms, including all mobile platforms, WebGL, Mac, PC and Linux desktop, web or consoles.

Development applications

Develop Unity games with a premium debugging experience

Components

– Visual Studio Tools for Unity
– C# and Visual Basic

Learn more about Game development with Unity

Game development with C++

Use the full power of C++ to build professional games powered by DirectX, Unreal, or Cocos2d

Description

Use the full power of C++ to build professional games for Windows, Xbox, and other consoles powered by DirectX, Unreal Engine, or Cocos2d.

Development applications

– Xbox live apps
– UWP apps on HoloLens
– Marble Maze

Components

– MSVC x64/x86 build tools
– Visual Studio C++ core features
– Windows Universal C Runtime
– C++ profiling tools
– Windows 10 SDK
– IntelliTrace

Learn more about Game development with C++

Data storage & processing

Connect, develop, and test data solutions using SQL Server, Azure Data Lake, Hadoop, or Azure ML

Description

The Data workload enables you to develop across a wide range of relational and big data assets. It provides you the tools to develop queries against databases, data warehouses and data lakes, whether on-premises or in Azure. It provides support for SQL, U-SQL, and Hive.

Development applications

– Use SQL Server Data Tools to design, deploy, and mantain databases
– Develop U-SQL scripts by using Azure Data Lake Tools
– Run Hive queries with Hadoop on Azure HDInsight

Components

– SQL Server Data Tools
– Azure Data Lake and Stream Analytics Tools
– .NET Framework 4.x development tools

Learn more about Data storage & processing

Data science & analytical applications

Languages and tooling for creating data science applications, including Python and F#

Description

Use R and Python for wide range of scenarios such as data acquisition, cleaning, model training, deployment, and plotting. Use F#, a powerful functional-first .NET language, for a wide variety of data processing tasks.

Development applications

– Create visual data plots with R
– Work with the R interactive (REPL) window
– Create machine learning models using R and Microsoft ML Server

Components

– R and Microsoft R Client language support & runtime distributions
– Python and Anaconda language support & runtime distributions
– F# with the .NET framework language support & runtime distributions

Learn more about Data science & analytical applications

Visual Studio extension development

Create add-ons and extensions for Visual Studio, including new commands, code analyzers, and tool windows

Description

Add the SDKs and tools you need to create new commands, code analyzers, tool windows, and language services using C#. Then, share your extension with the community in the Visual Studio Marketplace.

Development applications

– Extensions for Visual Studio IDE
– Software development kit development

Components

– Visual Studio SDK
– Visual Studio extension development prerequisites
– .NET profiling tools
– IntelliTrace

Learn more about Visual Studio extension development

Office/SharePoint

Create Office and SharePoint add-ins, SharePoint solutions, and VSTO add-ins using C#, VB, and JavaScript

Description

Take advantage of various project templates to extend Office and SharePoint. Easily build, debug, and publish your add-ins and solutions from Visual Studio.

Development applications

– Office add-ins
– VSTO add-ins
– SharePoint add-ins
– SharePoint solutions

Components

– Office Developer Tools for Visual Studio
– .NET Framework 4.5 targeting pack
– .NET Framework 4.x development tools
– Developer Analytics tools

Learn more about Office/SharePoint

Linux development with C++

Create and debug applications running in a Linux environment or Windows Subsystem for Linux (WSL)

Description

Build and run code on a remote machine or Windows Subsystem for Linux and browse, edit, and debug from within Visual Studio. Use CMake to target multiple platforms from the comfort of a single IDE.

Development applications

– Get Started

Components

– Visual Studio C++ core features
– Windows Universal C Runtime
– Visual C++ for Linux Development
– Visual C++ tools for CMake and Linux

Learn more about Linux development with C++

Visual Studio 2017 Community Mac

.NET Core cross-platform development

Build cross-platform applications using .NET Core, ASP.NET Core, HTML/JavaScript, and Containers including Docker support

Description

.NET Core is an open source, general-purpose development platform maintained by Microsoft and the .NET community on GitHub. It’s cross-platform (supporting Windows, macOS, and Linux), and can be used to build device, cloud, and IoT applications.

Development applications

– Complete .NET Core solution on Windows
– Docker images for .NET Core applications
– C# console application using .NET Core

Components

– .NET Core 2.x development tools
– .NET Framework 4.x development tools
– ASP.NET and web development tools prerequisites
– Cloud tools for web development
– .NET profiling tools
– IntelliTrace
– Live Unit Testing
– Live Share Learn more about .NET Core cross-platform development

Get more done with dedicated project templates for Azure. These Quickstart templates give you a working app so you can immediately deploy to the cloud.

Deploy your application to Azure directly from Visual Studio with one click, easily connecting to your database of choice.

If you’re dealing with an issue that is hard to reproduce locally on your machine, you can use Cloud Explorer in Visual Studio to quickly and easily attach the Visual Studio remote debugger to your Azure environment.

Manage and explore your Azure resources and resource groups from Visual Studio using Cloud Explorer. You can inspect their properties and perform key diagnostic actions easily.

Stay comfortable and productive with our most popular add-ons

Live Q&A with Visual Studio Big Wigs

Streamline your dream dev team

Taking DevOps to the next level with GitHub and Azure DevOps

Accelerate your C++ development

Cross-platform iOS & Android development with Xamarin

Build amazing web apps with .NET Core

A tour of Visual Studio for Mac for .NET development

So you have a Visual Studio Subscription? Now what?

James Tramel

Unifying Windows desktop development with .NET Core 3.0

Olia Gavrysh & Scott Hunter

Visual Studio 2019 slam dunks on game development with Unity

Jb Evain & Unity Evangelists

Uniting all containers and Kubernetes fans in this Visual Studio 2019 session

Lisa Guthrie

CI/CD for your mobile apps and games with Visual Studio App Center

James White

Machine Learning and Artificial Intelligence for every developer with ML.NET and Visual Studio 2019

Visual Studio Enterprise 2017 For Mac

Pranav Rastogi

Quickly take your applications to the “edge” with IoT and .NET Core

Richard Lander

Visual Studio Community 2017

Simplifying IoT development with Azure Sphere and Visual Studio

Visual Studio Enterprise 2017 For Mac Crack

Marc Goodner