- Visual Studio
- Xamarin Studio Vs Visual Studio For Mac
- Difference Between Xamarin Studio And Visual Studio For Mac
- X Code
- Visual Studio For Mac Os
- Visual Studio Xamarin Tutorial
id | title |
---|---|
Visual Studio for Mac Preview Release Notes |
View the latest Visual Studio for Mac release notes on docs.microsoft.com.
Visual Studio for Mac is a new member of the Visual Studio family focused onmobile and cloud development using Xamarin and .NET Core.
You still need a Mac to deploy an iOS app to the App Store, but there is an awful lot you can do just with Visual Studio on Windows, thanks to a preview tool and a handy cloud service, Matthew Soucoup explained in a presentation at the Visual Studio Live! Conference in Orlando, Fla. Please join us on Visual Studio Developer Community and in the Xamarin and Mono organizations on GitHub to continue tracking issues. Bugzilla will remain available for reference in read-only mode. Bugzilla will remain available for reference in read-only mode.
Overview
Visual Studio for Mac is an evolution of Xamarin Studio, andincludes all the functionality of Xamarin Studio 6.2.
Many changes have been made to the look-and-feel, terminology and defaultsettings to to align more closely with Visual Studio, while remaininga Mac-centred development experience.
Core Functionality
Visual Studio for Mac has everything you would expect from amodern IDE, including a full-featured source editor, code search andnavigation, a powerful debugger, acustomizable 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
Xamarin Platform
First-class support for the XamarinPlatform allows you to develop rich nativeexperiences for iOS, Android and Mac. The Xamarin.Forms cross-platformlibrary helps you share XAML-based UI code between iOS, Android and UWP(though UWP is not supported on Mac) without limiting accessto 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
New Features
The following features are new in Visual Studio for Mac Preview:
.NET Core Support
.NET Core is a platform for creating applicationsthat run on Windows, Linux and Mac. Visual Studio for Mac has support for loading,creating, running and debugging .NET Core projects.
In order to run .NET Core projects the .NET Core SDK should bedownloaded 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 tag Intellisense.
- Entity IntelliSense.
- Attribute and value IntelliSense.
- Code folding (must be enabled).
- Comment/uncomment.
- Improved Undo.
- 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.
- Selector IntelliSense.
- Directive IntelliSense.
- Improved Attribute and Value IntelliSense.
- Code folding.
- Comment/uncomment.
- 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
Multiplatform App Templates
The Multiplatform Forms App and the Native App project templates now offer a quick way to create amultiplatform mobile app and its cloud backend.
These templates create multiple projects: a Xamarin.iOS app project anda 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.
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.
In this release, publishing to Azure is the only publish destination but we will be adding more in later releases.
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. Output from the publishing will be logged toa Publish output pad and a publishing profile will be created under PropertiesPublishProfiles in the project.
All publish profiles defined in the project will be shown as options within in the Publish menu so that you can deploy again without havingto select the App Service a second time.
Multi-Process Debugging
In Xamarin Studio, projects have Project Run Configurations which specify optionsand arguments for running your project. A dropdown in the toolbar lets youview and change the current active Run Configuration.
Visual Studio for Mac extends this by adding Solution Run Configurationswhich allow multiple projects to be launched at once. You can create solutionrun configurations in the Solution Options dialog.
Using solution run configurations, you can debug multiple projectsat once. This is very useful for debugging how a mobile app interacts withits backend service.
TextMate Bundles
Visual Studio for Mac has support for TextMate language bundles, which youcan 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 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
Remove TLS Provider option
TLS Provider is not needed in the iOS build options anymore because:
- AppleTLS is the default since C7 and support up to TLS 1.2.
- MonoTLS is limited to SSLv3 and TLSv1: both are being deprecated.
Note: Xamarin.iOS 10.4 release notes already mention MonoTLS is deprecated and that it will be removed in the future.
Mac/iOS API issue analyzer
- Fix duplicated marker when analyzer is triggered.
We used to answer to too manySyntaxKind
inRegisterSyntaxNodeAction
.
This resulted in the source analysis marker to show up on both the object and the method, duplicating the message. - Get the 'message' (piece of information in the framework explaining why the API is deprecated/obsolete) from the attribute.
We now append that extra information to the different availability messages. - Updated all availability messages to improve clarity.
- Use the symbol's name in the availability message.
This also improves clarity, moving from:API Usage Issue: this API requires iOS 10.0 or later
to:'MyMethod' is only available on iOS 10.0 or newer
watchOS extension wizard
In Xcode 8.3, Apple introduced watchOS extensions (similar to the iOS ones), starting with the Intents extension (Siri).
The extension wizard has been upated to support watchOS extensions and we now have a dedicated Intents extension template.
Other improvements and bug fixes
- Handle
Deprecated
andObsoleted
attributes in autocompletion window. This allows Xamarin.iOS obsoleted and deprecated APIs to be shown as struck through. - We now show a progress bar when deploying to device. This is especially useful for watchOS. (Requires Xamarin.iOS 10.5.0.323+).
- We now use known OS versions from Xamarin.iOS to populate the deployent target dropdowns.
The 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.
Android
- New SDK Manager
Recently Google deprecated the SDK manager that ships with the Android SDKs in favor of using the SDK manager within Android Studio. Visual Studio for Macnow also includes its' own SDK manager.
Deploying your project to device or emulator is now done via the
/t:Install
msbuild target. Previously Visual Studio for Macwould use it's own internal logic for deploying applications to devices but now it uses same common targets that you canemploy from Terminal, or that are used in Visual Studio on Windows. One of the benefits of this is that there are nowbetter logs available to diagnose deployment issues.class-parse
is now the default for new binding projects.class-parse
can parse Java bytecode directly wihout the needfor a JVM and is able to extract parameter names from Java bytecode which contains debug symbols, e.g. 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 assistivetechnologies such as Voice Over. Many parts of the user interface, such as theeditor and solution explorer, have been made accessible through thesetechnologies, however it is still a work in progress and futher improvementswill be made in coming releases.
Feedback
Please report any problems you encounter with the Visual Studio for Mac Preview usingthe Help > Report a Problem menu.
If there is any functionality that you would like to be changed or added to VisualStudio for Mac, please use theVisual Studio for Mac UserVoice to share yourideas and vote on suggestions made by other people. You can also access this fromHelp > Provide a Suggestion.
We can't respond to all feedback directly, but we do read it all and it very muchhelps us prioritize improvements to make Visual Studio for Mac work better for you.
System Requirements
Visual Studio for Mac Preview requires macOS 10.11 or later. For Xamarin developmentthere are additional requirements listed here.
Side by Side Installation with Xamarin Studio
Visual Studio for Mac can be installed side by side with Xamarin Studio.
However, Visual Studio for Mac requires Mono 5.0, and installing or updating thestable or beta version of Xamarin Studio will downgrade Mono to an older version.
You can work around this by switching Xamarin Studio to the alpha update channel,or by opting out of Mono 4.6 downgrades in the Xamarin Studio update dialog. Ifyou need to reinstall Mono 4.8, you can get ithere.
Known Issues
This is a preview release, and ships with several known issues and limitations that will be addressedin future updates.
- 54993 'The root assembly... conflicts with another assembly' build error can occur for Xamarin.iOSprojects in Xamarin.VisualStudio 4.4.0 on Windows due to the incompatibleXamarin.iOS 10.10.0 Alpha version that is installed on the Mac by the latestVisual Studio for Mac Preview. Visual Studio 2015 and 2013 users canoptionally update to the Alpha updaterchannelto get the compatible Xamarin.VisualStudio 4.5.0 Alpha version. For VS 2017users and users who do not wish to use the Alpha versions on Windows, pleaserefer to the bug reportfor a few other options for how to resolve this issue.
- Debugging F# .NET Core projects is not working with Mono 5.
- Changes in files on disk are not picked up by wildcards until the project is reloaded.
- There are very few ASP.NET Core specific file templates.
- The first time you build an Android project that uses the Google Android SupportLibraries, the build may appear to hang with no output while the download takesplace.
- The new Multiplatform Forms App and Native App templates currently require the app to be manually configuredwith the address of the service on the host machine, except when using the iOSSimulator.
- The Xamarin.Forms XAML previewer can cause Visual Studio for Mac to become unresponsive.
- The File Nesting extension version 0.1 causesNuGet package restore to fail with Visual Studio for Mac Preview. This extension should be disabledin the Extension Manager until a new version is published that is compatible.
Changed in Preview 10
- Included with Visual Studio for Mac is a new Android SDK Manager that replaces the Google SDK Manager that was recently removed from the Android SDK.
Bug Fixes
- Fixed: Visual Studio for Mac crashes on opening a solution.
- Fixed: Code completion not working for F# file.
- Fixed: Error popup shown in wrong place.
- Fixed: Css property difficult to see on some dark Color Themes.
- Fixed: UITest project fail to run tests in projects created with the Multiplatform - Native App template.
- Fixed: UI hang if main menu is open when Nuget licence acceptance dialog displayed.
- Fixed: Visual Studio hangs if MSBuild returns 2000 errors.
- Fixed: UISegmentedControl does not get the constraint handles when in the designer.
- Fixed: Save as, then open original CSS or HTML file, you get 'An Autosave file has been found for this file'.
- Fixed: Visual Studio crashes when adding a Cocoa project.
- Fixed: Code completion lost when moving files.
- Fixed: Incorrect behavior and exception when trying to move a file that is modified in the editor.
- Fixed: Show Next / Previews commands don't open files in the right location.
- Fixed: Syntax highlighting breaks after using literal string with '$@' prefix.
- Fixed: Format document no longer works for F# documents.
- Fixed: .NET Core test runner output shown on single line in Test Results window.
- Fixed: Weird formatting behavior.
- Fixed: Setting Build Action to None for C# file is ignored.
- Fixed: Updating NuGet package in .NET Core project does not update project.assets.json file.
- Fixed: Lose the ability to type in JSON files.
- Fixed: NullReferenceException when trying to restore packages in xUnit project.
- Fixed: New project and files templates do not use the IDE's code formatting rules.
- Fixed: Nugetizer adds NuGet.Build.Packaging version 0.1.157-dev but latest available is 0.1.248.
- Fixed: Selecting recent solution when unsaved files open does not open solution.
Changes in Preview 9
Bug Fixes
- Fixed: Visual Studio for Mac cannot recover if the external MSBuild builder dies.
- Fixed: Chinese translations include the mnemonics key.
- Fixed: Svn is not working.
- Fixed: Editor inserts BOMs sometimes.
- Fixed: Truncation on Czech translation in the Info.plist editor.
- Fixed: Visual Studio for Mac does not archive .pdb files when archiving an Android app for publication.
- Fixed: Focus improperly set to toolbar on changing documents.
- Fixed: Russian truncation, Apple Developer Accounts.
- Fixed: Unable to build the PCL blank Xamarin.Forms solution.
- Fixed: Tooltip in publishing dialog flickers.
- Fixed: Azure app service name validation is not reliable.
- Fixed: Source Analysis C# rules makes the tooltip unusable.
- Fixed: Log message when .NET Core is not installed.
- Fixed: VS Mac not remembering some code formatting options.
- Fixed: UI is getting truncated on Sign and Distribute page.
- Fixed: Parenthesis autocomplete doesn't work.
- Fixed: Save as, then open original CSS or HTML file, you get 'An Autosave file has been found for this file'.
- Fixed: IntelliSense not working with excluding conditional ItemGroup.
- Fixed: Incorrect target framework names.
- Fixed: Fatal Error in F# Completion when a transient reference is missing.
- Fixed: Issue when trying to create a new project while a file has changes.
- Fixed: Undo doesn't bring files back to unmodified status.
- Fixed: TypeSystem task loops which causes flickering 'Gathering Class Information'.
Changes in Preview 8
Bug Fixes
- Fixed: Namespaces of new files aren't set identical to Visual Studio.
- Fixed: [Android] Sign and Distribute workflow silently fails if package name contains unsupported character.
- Fixed: ASP.NET Core project - Start debugging and then stop, it does not close the terminal window.
- Fixed: Warning about incorrect extension path when installing addin.
- Fixed: Failure to import TextMate theme (Antigua).
- Fixed: Difficult to read text in some editor themes.
- Fixed: Ocasional crash on startup.
- Fixed: First two characters in project file removed when adding file or folder.
- Fixed: Implicit property evaluation can't be disabled.
- Fixed: Cannot debug .NET Core test project.
- Fixed: Pressing return in a string literal no longer creates two strings joined with '+'.
- Fixed: Exception thrown from MonoDevelop.CodeIssues.AnalyzersFromAssembly.AddAssembly.
- Fixed: Unable to add in-app entitlements b/c of Fastlane. 'App ID is not available, Please enter a different string'
- Fixed: NullReference trying to insert code into a document.
- Fixed: Highlight identifier references only working for assignments when file not in project.
- Fixed: Unable to open Storyboard files from Visual Studio for Mac.
- Fixed: Highlight Current Line doesn't work
- Fixed: Adding new shared project to existing solution has MyClass.cs defined as None MSBuild item.
- Fixed: Unable to type in third '/' when gathering class information.
- Fixed: Deleting a project from the solution segfaults the IDE.
- Fixed: Unable to view 'Forms' item templates in Shared Project.
- Fixed: New ASP.NET projects do not compile.
- Fixed: Multiplatform Forms Template does not build.
- Fixed: String constant with null character does not show in the preview tooltip in the code editor.
- Fixed: Save As of a file that is part of a Core project breaks IntelliSense.
- Fixed: Undo commented region deletes extra text.
- Fixed: Documentation browser does not open.
Changes in Preview 7
- Default target framework for new projects is now .NET 4.6.2
- Added ASP.NET Core Web API Controller file template.
- Added support refreshing .NET Core projects in the solution window.
Bug Fixes
- Fixed: Unable to open Storyboard files from Visual Studio for Mac
- Fixed: Formatting preferences are not stored.
- Fix build action of MyClass.cs when adding new shared project to solution.
- Fixed: type system references not updated after NuGet restore.
- Fixed: .NET Core project build error after location changed.
- Fixed: .DS_Store files shown in Solution pad after refresh.
- Fixed: Unable to type in third '/' in comment when gathering class information.
- Fixed: Failure to import TextMate theme (Antigua).
- Pressing return in a string literal no longer creates two strings joined with ‘+’.
- Fixed: First two characters in project file removed when adding file or folder.
- Fixed: Code completion automatically closes parenthesis, instead of offering completions.
- Fixed: [Android] Improve the error message shown when the package name does not contain a period.
- Fixed: When Mac Publishing with 'App Store' fails, it asks to check 'Build Output', but build passes.
- Fixed: Unable to create Mac/iOS Development certificate for Member & Admin.
Changes in Preview 6
- New: Azure Publishing.
- New: watchOS extension wizard.
- New: Accessibility support.
- New: Web tooling support for HTML, CSS and JSON files.
- Updated: New: Mac/iOS API issue analyzer.
- Updated: Roslyn 2.0 support and support C# 7.
- Updated: Improvements to Fastlane support for Apple Developer Account management.
- Updated: New Text Editor infrastructure.
- Updated: Debugger support for async methods.
General
- /usr/local/bin is added to the PATH when starting Visual Studio for Mac
### .NET Core Support Improvements
- .NET Core project templates if .NET Core SDK is not installed.
- Environment tag helpers in Core Web App now use Development by default.
- .NET Core projects now open an external console by default.
- Fixed new F# files not being saved in .NET Core F# project.
- Fixed unable to to CoreCLR error when debugging on Mac 10.12.4.
Bug Fixes
- Fixed development dependencies not marked in project.assets.json
- Fixed restore error for .NET Core project referencing shared project
- Fixed duplicate F# files in Solution window
- Fixed null reference when missing project reference when restoring a .NET Core project
- Fixed StartProgram and StartAction arguments being ignored for .NET Core projects
- Fixed save failed after deleting file from .NET Core project
- Fixed being unable to re-order F# files in the Solution window
- Fixed empty ItemGroups added to .NET Core project
- Fixed build error when .NET Core project is referenced
- Fixed new F# files not being saved in .NET Core F# project
Changes in Preview 5
General
- Application icon updated
### .NET Core Support Improvements
- Added support for setting PipeTransport settings when running .NET Core application
- .NET Core debugger now supports running in external console
- ASP.NET Core run configuration dialog simplified
- Updated to NuGet 4.0.0.2323
- Updated to latest .NET Core SDK 1.0.1 project templates
- Updated to latest stable Visual Studio Test client 15.0.0
Bug Fixes
- Fixed dotted filenames not excluded correctly
- Fixed F# tutorial project template
- Fixed runtimes not restored for .NET Core projects
- Fixed PackageTargetFallback being ignored for .NET Core projects
- Fixed Android project showing errors in text editor for types
- Fixed wrong .NET Core SDK download url shown in download dialog
- Fixed no code completion in new C# file
- Fixed F# interactive window not working
- Fixed debug files being generated in the wrong location
- Fixed global MSBuild properties not used for project build
- Fixed MSBuild Remove item added when file was deleted
- Fixed failure to building legacy MonoMac projects
- Fixed hard coded wildcard globs for Sdk projects
- Fixed error when installing extensions
Changes in Preview 4
General
- This release includes all the new features and fixes included in Xamarin Studio 6.3 (release notes).
- MSBuild is now the default build engine instead of xbuild.
- Portable and embedded compiler options can now be specified in project options.
- Various optimizations, memory usage and performance improvements across the IDE.
### .NET Core Support
- Integrated unit testing support for running and debugging tests with the Visual Studio Test Platform that is included with the .NET Core SDK.
- Integrated the .NET Core templating engine and project templates.
- F# .NET Core projects are now supported.
- Support for migrating projects project.json/xproj to csproj.
- References and Packages folders have been removed from the Solution window. This information is shown in the Dependencies folder under the Assemblies, Projects, Packages and SDK folders.
- Allow multiple NuGet packages to be select and removed in one step for .NET Core projects.
- A message dialog is now displayed if .NET Core SDK is missing or unsupported with a download link.
- Added ASP.NET Core run configuration settings in project options. App url, launch url and enabling/disabling launching the browser can now be configured.
Bug Fixes
- Fixed license acceptance dialog not shown for .NET Core projects
- Fixed crash at startup if the ~/Library/Preferences/Xamarin directory is owned by another user
- Base class constructor tooltip does not contain all constructor definitions
- Fixed Find References of All Overloads not returning all items
- Fixed language selection for recent templates not showing correct lanuage used
- Fixed quick task drawing glitch
- Fixed incorrect working directory used when running .NET Core projects
- Fixed Lamba argument renaming shows code completion items
- Fixed disabled breakpoints being hit when debugging .NET Core project
- Fixed restore errors after renaming project file
- Fixed unevaluated MSBuild expression being shown in the project options as the compiler's Define Symbol for .NET Core projects.
- Fixed potential race condition on saving an MSBuild project
- Fixed Description not saved in .NET Core project file if modified
- Fixed RootNamespace to be updated from project options for .NET Core projects
- Refresh NuGet packages after target framework changed in project options
- Fixed target framework changes made in project options not saved
- MSBuild project option is no longer shown for .NET Core projects
- Show correct target frameworks in project options for .NET Core projects
- Remove extra metadata saved with ProjectReferences
- Fixed app freezing whilst attempting to debug on iOS Simulator
- Fixed intellisense fails when referencing an iOS binding project
- Fixed scrolling to type when using Go To Definition with Assembly Browser
- Fixed crash on adding breakpoint to any line of Main.axml file
- Hide diagnostics when severity is hidden.
- Fixed formatting on pasting large blocks of unformatted code
- Fixed crash when using the Assembly Browser
- Fixed library reference alias change not reflected in the type system
- Tabs to Spaces defaults to true for F# projects
- Fixed code completion on standalone files
- Fixed open statements greyed out that contain operators
- Fixed floating versions not handled in package references
- Fixed document is not part of the workspace exception
- Item groups now merged in F# projects for Visual Studio compatibility
- Increase length of strings shown in Watch window
- Fixed copying the contents of a debugger expression does not copy just the value
- Fixed crash on opening .cs file in Hex Editor
- Fixed build error after referencing another .NET Core project
- Restore after modifying project references
- Fixed Clean failures not reported on Rebuild
- Fixed broken code completion after referencing a project
- Fixed main toolbar switches back from Release to Debug on adding/removing a file
- Fixed not being able to reference .NETStandard projects from .NET Core projects
- Fixed hovering over constructor not showing resolved constructor overload
- Fixed xmlns being added to .NET Core SDK projects
- Fixed PackageReference elements added with a Version element instead of using an attribute
Changes in Preview 3
General
- Recently used project templates are now displayed in the New Project dialog.
- Open Url context menu is now available for hyperlinks in the text editor.
### .NET Core Support Improvements
- Updated the .NET Core CLR debug adapter to version to 1.6.3
- Project templates updated to use the new simplified MSBuild Sdk style projects.
- Support simplified MSBuild .NET Core projects that use the Sdk attribute.
- Simplified MSBuild .NET Core projects require the .NET Core SDK 1.0.0-rc4 to be installed and Mono 4.8.0.392 or higher.
- Show packages from .NET Core project file by default in the Dependencies folder whilstwaiting for dependency information to be returned from MSBuild.
- NuGet packages are now restored on saving the project file after it has been edited in the text editor.
- NuGet is now used to restore .NET Core packages instead of running MSBuild restore.
iOS
- Audio Unit Wizard.
- Remove TLS Provider Option.
Bug Fixes
- Fixed text editor not highlighting code correctly for pre-processor directives.
- Fixed C# brace matching.
- Fixed code templates not working correctly from 'Insert Template...' dialog.
- Fixed enter in code generator not implicitly selecting current item.
- Fixed format document changing position of caret.
- Fixed C# code completion for Android shows XML.
- Fixed Go To Matching brace not working for regions.
- Fixed TextMate indentation engine not reading the on the fly formatting IDE setting.
- Fixed text editor scrolling there are many IExtendingTextLineMarkers.
- Fixed invalid search pattern error with certain wildcard items.
- Fixed non-C# files not displayed in Solution window for .NET Core projects.
- Fixed build error after renaming a .NET Core project.
- Fixed breakpoint not hit in .cshtml files.
Changes in Preview 2
- Solutions now load much faster.
- Visual Studio for Mac now uses NuGet 4.0.0.2098.
- The XAML previewer is more reliable.
- NuGet package source information is now reloaded if the NuGet.Config file ismodified in the text editor or externally.
- The external console is now used for new .NET Core console applications by default.This can be changed in Project Options - Run - Configurations - Default.
- Welcome Page
- Recent project / solution list can be filtered and removed.
- The page can be navigated using keyboard.
- Fixed activation / deactivation issue when opening and closing a solution.
Bug Fixes
- Fixed Report a Problem on macOS 10.11.
- Fixed IntelliSense and syntax highlighting in XAML files.
- Fixed application icon rendering issue.
- Fixed NuGet package sources information not available when NuGet.Config read fail.
- Fixed NuGet package sources with encrypted passwords not being supported.
- Fixed install error when installing a NuGet package, such as Microsoft.AspNetCore.Mvc,which has package dependencies not in the local NuGet package cache into a.NET Core project.
- Fixed NuGet package restore information not displayed for the ConnectedService project templates.
- Fixed potential user interface hang on opening a .NET Core project.
- Fixed execution error when an environment variable is used in a run configuration.
- Fixed potential crash when switching active run configuration.
- Many other bug fixes!
When considering iOS or Android app development, most of us think about Objective-C vs Swift, and Java first of all. Being considered native tech stacks, they are naturally most often used mobile development tools when it comes to iOS and Android app development. However, there are more ways to build performant and user-friendly mobile apps. And Xamarin is one of them. In this article, we conduct an in-depth Xamarin review and compare it to native and cross-platform mobile development solutions on the market. If you know the basics, consider skipping to the sections you are interested in.
What Is Xamarin?
It’s impossible to ignore Xamarin when talking about the key approaches to mobile application development. Xamarin is a tool used for cross-platform mobile app development that allows engineers to share about 90 percent of code across major platforms. Being a comparatively new tool, it is based on the Microsoft technology stack and already has a community of over 1.4 million developers.
The platform was built by the developers behind Mono, an open source development platform based on the .NET Framework, led by Miguel de Icaza and first introduced in 2001. The Xamarin company was founded on May 16, 2011.
However, unlike its predecessor, Xamarin was created as a commercial project until the company was acquired by Microsoft in 2016. Xamarin became a popular cross-platform product for developing mobile apps within the Microsoft ecosystem. This acquisition broke the financial barrier for using Xamarin. As Microsoft made Xamarin SDK open-source, it became part of Xamarin Visual Studio Integrated Development Environment (we discuss best IDEs to use for Xamarin development below). What are the main features of Xamarin?
C# language. Xamarin uses a single language, C#, to create apps for all mobile platforms. Unlike interpreted solutions, such as Appcelerator Titanium, Xamarin is natively compiled, which makes it a go-to option for building high-performance apps with native look and feel.
Based on .NET framework. C# is a mature language with strong safety-typing that prevents code from unexpected behavior. As C# is one of the .NET framework languages, it can be used with a number of useful .NET features such as Lambdas, LINQ, and Asynchronous programming (async/await).
Technically speaking, Xamarin uses C# and native libraries wrapped in the .Net layer for cross-platform app development. Such applications are often compared to native for both iOS and Android mobile development platforms in terms of performance and user experience. Additionally, Xamarin can leverage all native and the latest API access to utilize underlying platform capabilities in Xamarin apps such as ARKit on iOS or Android Multi-Window.
While the code related to business logic, database access, and network communication can be shared across all platforms, Xamarin allows you to create platform-specific UI code layer. Thus, Xamarin cross-platform apps look 100% native on any device, providing better user experience, as compared to generic hybrid apps.
Compilation. The platform has two major products: Xamarin.iOS and Xamarin.Android. In the case of iOS, the source code is compiled directly into native ARM assembly code (Ahead-of-Time compilation), while Android Xamarin apps are first compiled down to Intermediate Language and then – into native assembly code at runtime (Just-in-Time compilation). However, in both cases the process is automated and tailored to handle such issues as memory allocation, garbage collection, and platform interoperability by default.
Xamarin.Forms. Xamarin.Forms is a separate product designed to create prototypes or simple mobile apps sharing 100 percent of the code across iOS and Android.
Xamarin.Mac. Additionally, engineers can use Xamarin.Mac to build applications for Mac OS. These and some other products from the Xamarin stack will be discussed in a bit.
Platform SDKs. Xamarin provides access to platform-specific SDKs (Cocoa Touch for iOS and Android SDK) via simple C# syntax.
Platform-specific code bindings. In most cases engineers will be able to handle development keeping the native look and feel of the respective platforms within the Xamarin environment. However, Xamarin allows you to call existing platform code (e.g. Swift for iOS) if you must reuse some modules or realize some platform-specific functions like barcode scanning, PayPal or Google Analytics integration.
Support of wearables. Xamarin supports building apps for Apple and Android Watch devices. Engineers can use Visual Studio both for Mac and Windows to build iOS Apple Watch apps. Also, Xamarin fully supports Android Wear.
Xamarin project structure. Most of the Xamarin-related work is expected to be run via a Windows development computer with Visual Studio and Xamarin installed. The apps can be debugged straight from the desktop or on devices and emulators. If you plan to develop iOS apps on Windows, it’s also possible as Visual Studio connects to the iOS storyboard designer and iOS simulator. There’s also Visual Studio for Mac which allows for running a simulator on the Mac or directly on a tethered iPhone. Debugging is run via Visual Studio.
Xamarin project structure. Image source: Visual Studio Docs
To get more in-depth understanding of Xamarin engineering aspects consider checking these resources:
As any other technology, Xamarin has its own benefits and drawbacks, which have been a subject of a heated discussion recently. To make an informed decision about Xamarin vs native development, let’s weigh all the pros and cons of app development with Xamarin. If you’re really pressed for time, we recommend watching this video providing a high-level overview of the Xamarin platform’s strength and weaknesses in under 6 minutes.
If you want to get down to details, keep reading.
Pros of Using Xamarin for Development
There are good reasons why Xamarin is used by numerous companies, including Trello, Slack, and GitHub.
⊕ One Technology Stack to Code for All Platforms
Xamarin uses C# complemented with .Net framework to create apps for any mobile platform. Thus, you can reuse up to 96 percent of the source code speeding up the engineering cycle. Xamarin also does not require switching between the development environments: You can build all of your Xamarin apps in Visual Studio which completely replaced Xamarin Studio. The cross-platform development tools are provided as a built-in part of the IDE at no additional cost.
⊕ Performance Close to Native
Unlike traditional hybrid solutions, based on the web technologies, a cross-platform app built with Xamarin, can still be classified as native. The performance metrics are comparable to those of Java for Android (as explained here) and Objective-C or Swift for native iOS app development. Moreover, Xamarin performance is constantly being improved to fully match the standards of native development. Visual Studio offers a complete solution for building, testing, and tracking the app’s performance: Visual Studio App Center allows you to run automated UI tests and identify performance issues before the release. However, this service is provided at an additional fee.
⊕ Native User Experiences
Xamarin allows you to create flawless experiences using platform-specific UI elements. Simple cross-platform apps for iOS, Android or Windows are built using Xamarin.Forms tool, which converts app UI components into the platform-specific interface elements at runtime. As the use of Xamarin.Forms significantly increases the speed of app development, it is a great option for business-oriented projects. Yet, there might be a slight decline in performance due to the extra abstraction layer. For custom app UI and higher performance you can still use Xamarin.iOS and Xamarin.Android separately to ensure excellent results.
⊕ Full Hardware Support
With Xamarin, your solution gets native-level app functionality. It eliminates all hardware compatibility issues, using plugins and specific APIs, to work with common devices functionality across the platforms. Along with the access to platform-specific APIs, Xamarin supports linking with native libraries. This allows for better customization and native-level functionality with little overhead.
⊕ Open Source Technology with Strong Corporate Support
After the company was acquired by Microsoft in February 2016, Xamarin licensing policies underwent radical changes. Xamarin SDK, including runtime, libraries, and command line tools, has become open source and available for all under the MIT license as a part of Visual Studio. By eliminating the major barrier, the cost of license, Microsoft paved the way for the further growth of the platform. Plus, headed by Microsoft, and supported by Unity, JetBrains, and Red Hat, the .NET Foundation in general and Xamarin specifically has become a reliable and powerful tech stack.
⊕ Simplified Maintenance
Due to its cross-platform application, Xamarin makes maintenance and updates easier. You can simply deploy the changes or updates to the source file and they will be applied to both iOS and Android apps. However, this works only for the applications that use Xamarin.Forms or the business logic, shared code, updates for Xamarin.iOS and Xamarin.Android apps. Thus, it helps you save your time and money while keeping your apps up to date.
⊕ Complete Development Ecosystem
Xamarin comes in one package with a complete development toolset, including its own IDE. In April 2018, a lot of Xamarin development tools previously known as separate features became part of the Visual Studio App Center. Included is the platform itself (Xamarin SDKs), testing (formerly Xamarin Test Cloud), distribution and analytics (formerly Xamarin.Insights) platforms, and many more. Since the toolkit remains free, there’s no need to invest in additional tools or integrate third-party apps to build, test, and deploy your Xamarin apps.
⊕ Xamarin.Forms: a framework for simple apps and prototypes
Xamarin suggests developers build mobile apps in two ways. The first one is to use Xamarin.iOS and Xamarin.Android, which is considered the main approach. Using Xamarin.Forms, the Visual Studio Library is the second one. Xamarin.Forms allows for rapid prototyping or producing apps with less platform-specific functionality. That’s why Xamarin.Forms is the best fit for apps where code sharing is more important than custom UI. You’ll be able to create a single interface and share it across platforms without designing for each platform individually. You can also build applications where some parts of their user interfaces are made with Xamarin.Forms and the others are engineered using the native UI toolkit.
While Xamarin.Forms remains a compromise in terms of native look and feel compared to Xamarin.iOS and Xamarin.Android, there’s a vibrant community paying attention to this tool. For instance, some tech providers contribute their libraries like Telerik UI that enrich engineering capabilities providing pre-configured UI components.
⊕ Xamarin.Forms Live Player
As Xamarin.Forms is aimed at fast and frictionless development, Microsoft suggests using a Live Player tool. It’s an application installed on actual phones to immediately test and debug your apps without emulator deployment or tethering a device to a workstation. Upon Live Player installation a developer scans a QR-code in Visual Studio using a phone camera, which provides access to a currently developed app. An app on the phone synchronizes in real time with the one in Visual Studio. This drastically simplifies all set up and further debugging procedures. Unfortunately, Microsoft discontinued Live Player support, but you still can download the app and and pair it with Visual Studio.
⊕ Building apps for Macs with Xamarin.Mac Tool
Xamarin.Mac allows for developing fully native Mac apps using C# and .NET. It integrates with the same libraries that are used for developing in Objective-C with Xcode. By using Xamarin.Mac combined with Xamarin.iOS and Xamarin.Android, developers can share up to 90 percent of native code across Android, iOS, and Mac OS. Furthermore, Xamarin.Mac integrates with Xcode, so a developer can use the Xcode’s Interface Builder to create an app’s user interfaces.
⊕ Xamarin Learning Resources
Xamarin University is a dedicated e-learning portal for people who are just getting familiar with the package. The University caters to engineers that know C# as well as anyone with a little programming experience. The resource provides all essential knowledge to new engineers onboarding Xamarin-based products.
However, Xamarin University is going to retire in June 2019. While the educational resources join Microsoft Learn, there is no impact on access to classes. Newcomers can still leverage beginner to advanced level materials, which include free self-guided learning, live online classes, office lectures, and guest lectures. More detailed information on enrollment and further activities is available via Xamarin University End of Life FAQ.
⊕ Xamarin support of TVs, wearables, and IoT
The Xamarin framework, thanks to its Xamarin.Forms, enables building portable versions for many platforms. In addition to iOS, Android, Windows Phones, and Mac, you can develop applications for Tizen – an operating system used on some Samsung devices – for wearables, TVs, and IoT. Besides that, Xamarin.iOS allows for building applications for tvOS for Apple and watchOS.
Xamarin Cons to Consider
However, there are still some drawbacks that can cast a shadow upon the platform. So, why not use Xamarin?
Θ Slightly Delayed Support for the Latest Platform Updates
This depends completely on the Xamarin developer team. It’s impossible for third-party tools to provide the immediate support for the latest iOS and Android releases: it takes some time to implement the changes and/or introduce new plugins, etc. Although Xamarin claims to provide same-day support, there still might be some delays.
Θ Limited Access to Open Source Libraries
Native development makes extensive use of open source technologies. With Xamarin, you have to use the elements provided by the platform and some .NET open source resources, facing both developers and consumers. While the choice is not quite as rich as it is for Android and iOS mobile app development, you can use NuGet Packages that now contain everything that was in the retired Xamarin Components.
Θ High Cost for Professional and Enterprise Use
Although Xamarin is a free open-source platform for individual developers, the framework may cost a pretty penny for enterprise needs. You will spend a lot to purchase a license for Visual Studio. For instance, Visual Studio Professional with the core set of development tools costs $1,199 for the first year and $799 for renewal. At the same time, a Visual Studio Enterprise, which enables experimenting with additional tools, will cost $5,999 for the first year and $2,569 for renewal. The features for both we cover below.
Θ Xamarin Talent Pool and Community Constraints
Obviously, the Xamarin community is significantly smaller than those of native iOS or Android. It’s also smaller than React and Ionic communities. Thus, finding an experienced Xamarin developer could be a challenge. Although the platform is growing its following fueled by the support from Microsoft.
According to the 2018 Stack Overflow survey, only 7.4 percent used the Xamarin framework as of 2018 compared to React’s 28.3 percent (to be fair, this number also includes standard React plus React Native) and Cordova’s 8.3 percent.
Usage of the Xamarin as compared to other frameworks. Image source: Stack Overflow
Despite the fact that the number of Xamarin engineers does not compare to iOS or Android native communities, the platform provides extensive support to its developers. Namely, there is a dedicated educational platform, Xamarin University, now joining Microsoft Learn as mentioned above. It provides resources and practical training for those who are new to this technology. Using this support, the learning curve for an experienced C#/.Net engineer is minimal.
Another problem that some developers experience is the fragmentation and lack of standards in learning and development resources, including documents. This impacts the quality of support you are going to get.
Θ Basic Knowledge of Native Languages Required
When using Xamarin.iOS and Xamarin.Android to build mobile apps with truly native look and feel, you will still need to write a platform-specific layer of code. Thus, at least a basic knowledge of native technologies (Java/Kotlin for Android and Objective-C/Swift for iOS) is required. This, however doesn’t apply to Xamarin.Forms.
Θ Not Suitable for Apps with Heavy Graphics
Xamarin’s main benefit is the ability to share your code across the platforms. Yet, you can only share the logic, UI code will be mostly platform-specific. This makes building games, rich custom UI, or complex animations in Xamarin pretty pointless. With a small amount of shared code, Xamarin becomes unviable option.
Θ Larger App Size
Depending on their type and complexity, Xamarin apps are typically larger than native ones (the latter might be half the size of a Xamarin app). A simple “hello, world” app for Android might take up to 16 MB, much of it being used by the associated libraries, content, Mono runtime, and Base Class Library (BCL) assemblies.
Xamarin app size. Image source: developer.xamarin.com
Thus, Xamarin apps usually need additional optimization to keep the app file size reasonable.
Θ Compatibility Issues with Third-Party Libraries and Tools
There might be some issues when integrating third-party resources with your Xamarin app. While most of the tools and libraries offer full support for native technologies, Xamarin support may not be provided by a vendor. Although, Xamarin has its own components store, there is always a chance that you’ll need a specific capability or integration within your app that is not provided by the platform. So, to leverage other third-party packages you have to use wrappers.
Θ Stability Issues
Both Xamarin.iOS/Android and especially Xamarin.Forms after so many years on the market raise complaints about stability, bugs, and crashes. The majority of issues appear with Xamarin.Forms as many developers first embark on this tool to get the most of code-sharing. While Microsoft strives to fix Xamarin.Forms, the tool remains a nice option for prototyping rather than a solid tool for complex apps. Some engineers complain that instead of time-savings with code-sharing you may end up spending more time resolving issues.
Xamarin Visual Studio IDE
If you have a feeling that Xamarin is right for you, you’ll be interested to know the main Xamarin IDEs that can be used and how they compare with each other.
Visual Studio (VS) is a Microsoft Integrated Development Environment, software used for building, debugging, and publishing applications across all platforms and devices. There are three main Visual Studio Versions for Xamarin – Visual Studio Community, Visual Studio Professional, and Visual Studio Enterprise. The key factors for choosing an acceptable version are the experience of developers (students or professional engineers) and their team size. Programmers can develop software for Web, mobile, server, and desktop with all versions. Learn more about Visual Studio in our article about the tools used for .NET development.
Recently, Visual Studio 2019was released. It contains numerous improvements that accelerate application development, from real-time collaboration using Visual Studio Live Share to the new Visual Studio start window. Also, it started supporting per-monitor DPI and improved debug capabilities.
The Xamarin workload is now reduced by about 3 times from previous versions, meaning reduced from 23 GB to 7GB. It drastically drops disk impact and accelerates installation. Additionally, the new release made considerable improvements for Android SDK and emulators management. It also made major efforts in strengthening UI authoring. This includes Xamarin.Forms improvements with IntelliCode for XAML, AXML-enhancements for Android, upgraded Xamarin iOS Shipping, and many other features.
Visual Studio
Visual Studio Community is a good fit for students, open-source projects, small development teams with up to 5 users. The Community package is also good for teams that are new to Visual Studio. This version is free for use.
Visual Studio Professional is a set of tools and services created for professional developers, small teams, and enterprise use. This version provides powerful features to quickly understand your code: showing code references, changes to your code, displaying who last modified a method, or discovering whether tests are being passed. The professional version includes Team Foundation Server 2017 that provides features such as agile project planning tools, delivery plans, charts, and more. The annual price for this version is $ 1,199.
Visual Studio Enterprise has strong support tools and services. They allow for managing complex processes between development and IT operations; tracking quality with manual and automated tracking tools; access to professional trainings; and the entire Microsoft engineering and testing ecosystem. It includes Microsoft extensions for Visual Studio Team Foundation Server and Visual Studio Team Services. In this version, Team Foundation Server provides you with Test Manager, Package Management, and Private Pipeline. The Enterprise Version also has priority support, partner offers, and much more. The annual price for Enterprise Studio is $5,999.
For enterprise use, we also recommend checking the Visual Studio App Center. It’s a tool that organizes app development workflow across different mobile technologies including Xamarin. Here, engineering teams that work on multiple apps can bring their tool set together. It automates app packaging through GitHub or Bitbucket, provides integration for different testing services, enables email app distribution for testing, does crash tracking, and analytics.
Visual Studio Online (VSO) is a set of tools, which allows developers to easily set up continuous integration across different platforms. Continuous integration is a software practice in which all code changes are immediately tested and integrated with the main code base. It helps to check and debug code quickly. This version is likely the most relevant, most interesting one for mobile developers.
Switching from Android Studio or Xcode to Visual Studio
If your development team considers transitioning from Android Studio (AS) or Xcode to Visual Studio, the learning curve won’t be that steep. The feature-to-feature comparisons show that the IDEs are very much the same in terms of development flows with little nuances for each of the environments.
From Android Studio to Visual Studio. While Android Studio official support is focused on Java, C/C++, Kotlin, and XML languages, VS supports all major programming languages including those of AS. This is due to the wide spectrum of platforms that IDE caters to. VS provides more engineering freedom and allows for working with different projects from one environment. If you’ve been using the Google Cloud Platform integrated with AS to run virtual machines or just manage projects, Google is kind enough to provide its cloud platform extension for VS as well. Basically, you can use both the Microsoft cloud ecosystem and Google Cloud right from VS. Visual Studio can be installed on all main platforms: Windows, Android, Mac OS, and Linux.
From Xcode to Visual Studio. Xcode IDE, similar to VS, supports source code for all major programming languages. So, there won’t be any surprise after transitioning. Again, if you’ve been tied to Mac OS while using Xcode, Apple hardware isn’t needed for VS. For those, who use CloudKit for server-side storage, Visual Studio and Xamarin allow for simple integration of CloudKit. The main drawback in using VS compared to Xcode is the same: Both Android Studio and Xcode are free to use while VS requires a pretty high subscription fee.
According to developers’ estimates, Visual Studio and Android Studio, both, have mostly the same ease-of-use level and support quality. Comparing the same indexes with VS and Xcode, we can say that VS estimates are a bit better. Also, Visual Studio is more popular among enterprises (>1000 employees) while about 50 percent of Android Studio and Xcode users are small businesses (50 or fewer employees).
Considering Strategy Analytics ranks on mobile development environments, Xcode achieved the highest ranking on testing capacities as did Visual Studio. Android Studio lagged behind. Total scores were: Xcode-22; Visual Studio -21; and Android Studio -13.
Xamarin Studio Vs Visual Studio For Mac
Considering Other Options: Xamarin vs Native iOS/Android vs Hybrid Development
Recently, many developers tend to agree that Xamarin can be considered “native” development tool. Indeed, there is an opinion that “anything that can be done in an iOS application using Objective-C or Swift, and anything that can be done in an Android app using Java, can be done in C# using Xamarin.”
Yet, there are many pitfalls in native vs Xamarin debate. Let’s see how the Xamarin compares to the native development tools and hybrid development platforms (Ionic, PhoneGap/Cordova).
Xamarin vs hybrid vs native development in a nutshell
Although hybrid mobile development tools are evolving quickly, they still lack the performance and native capabilities that Xamarin offers at roughly the same cost. When considering the two approaches, the most popular dilemma is Xamarin vs Ionic or Xamarin vs React Native (also see our story on pros and cons of ReactJS and React Native for a full explanation of the framework). However, the latter tends to lose due to a number of restrictions in the underlying technologies (web stack).
Difference Between Xamarin Studio And Visual Studio For Mac
Yet, there is a JavaScript-based mobile development tool that outperforms hybrid solutions, at least in terms of UI. It’s NativeScript. This cross-platform open source framework, backed by Telerik, allows you to implement native UI and connect to native APIs for better mobile experience while using a single code base. Its main difference is that it uses XML markup, which compiles into Android and iOS native equivalents, instead of HTML WebView.
This approach fills the gap between native and hybrid development, similar to the way Xamarin does. The main difference between the two tools lies in the programming languages they use. So Xamarin vs NativeScript comparison should be a subject of a more detailed research.
Flutter is another Xamarin competitor that’s on the way up. We’ve already compared them in Xamarin vs Flutter. Flutter is a new Google framework that can potentially compete with Xamarin in terms of performance and native experience. Flutter tries to enter the market of cross-platform development and even suggests Xamarin.Forms developers to transition with their existing skillset.
At the same time, Xamarin vs native Android/iOS development debate seems to be even more complicated: Both options prove to deliver value in terms of product quality and performance, the choice typically depends on the type of application you want to build.
Piece of Advice
When comparing the pros and cons, the listed drawbacks are usually considered to be a collateral damage. Most business owners choose Xamarin mobile app development platform as it decreases the time to market and engineering cost, by sharing the code and using a single technology stack. Yet the purpose of the app and its target audience might be an even more important factor to consider.
Based on our team’s experience, the best use-case for Xamarin is enterprise mobile solutions. With standard UI which covers 90 percent of the projects, all the core product logic can be easily shared across the platforms. Hence, platform customization will only take 5-10 percent of the engineering effort.
X Code
In case of consumer-facing apps with heavy UI, the amount of shared code decreases drastically. Thus, Xamarin cross-platform development loses its major benefit and might equal in time and cost to native solutions.
Visual Studio For Mac Os
However, if you are looking for a Xamarin alternative to build a cross-platform mobile app, you might be disappointed. While the most widely used cross-platform mobile development tools are PhoneGap/Apache Cordova, Ionic Framework, Appcelerator/Titanium, they rely primarily on web technologies, such as HTM5 or JavaScript. That is why none of these tools can have the same level of performance and native functionality that Xamarin offers.
Visual Studio Xamarin Tutorial
This article is a part of our “The Good and the Bad” series. If you are interested in web development, take a look at our blog post on the