Application Lifecycle Management (ALM) with Xamarin apps

Visual Studio 2015

The new home for Visual Studio documentation is Visual Studio 2017 Documentation on

For the latest documentation on Visual Studio 2017, see Application Lifecycle Management (ALM) with Xamarin apps on Xamarin enables you to build cross-platform mobile apps targeting Android, iOS, and Windows using C#, .NET, and Visual Studio. Xamarin allows a large portion of code to be shared between platforms, with only a small percentage needing to be platform-specific. For more information on Xamarin itself, see Visual Studio and Xamarin.

Developing apps for modern platforms involves many more activities than just writing code. These activities, referred to as DevOps (development + operations), span the app’s complete lifecycle and include planning and tracking work, designing and implementing code, managing a source code repository, running builds, managing continuous integrations and deployments, testing (including unit tests and UI tests), running various forms of diagnostics in both development and production environments, and monitoring app performance and user behaviors in real time through telemetry and analytics.

Visual Studio together with Visual Studio Team Services and Team Foundation Server provide a variety of DevOps capabilities, also referred to as Application Lifecycle Management or ALM. Many of these are wholly applicable to cross-platform projects.

This is especially true with Xamarin apps because they are built with C# and .NET, around which some ALM tools are built. Other tools, require tight integration with build and runtime environments. Because Xamarin apps run on non-Windows platforms and use the Mono implementation of .NET, Xamarin provides specialized tools for certain needs.

The tables below identifies which Visual Studio ALM features you can expect to work well with a Xamarin project, and which ones have limitations. Refer to the linked documentation for details on the features themselves.

Reference link: Work (using Visual Studio Team Services or TFS, including Team Explorer Everywhere)

General Comment: all planning and tracking features are independent of project type and coding languages.

FeatureSupported with XamarinAdditional Comments
Manage backlogs and sprintsYes
Work trackingYes
Team room collaborationYes
Kanban boardsYes
Report and visualize progressYes

Reference link: Analyzing and Modeling Architecture

Design features are independent of coding language, or work with .NET languages like C#. See Roles of Architecture and Modeling Diagrams in Software Development for what aspects are related to code.

FeatureSupported with XamarinAdditional Comments
Sequence diagramsYes
Dependency graphsYes
Call hierarchyYes
Class designerYes
Architecture explorerYes
UML diagrams (use case, activity, class, component, sequence, and DSL)Yes
Layer diagramsYes
Layer validationYes
FeatureSupported with XamarinAdditional Comments
Use Team Foundation Version Control or Visual Studio Team ServicesYes
Getting started with Git in Team ServicesYes
Code analysis/Improve code quality (references, suggested changes, etc.)Yes
Find code changes and other historyYesExcept across platform-specific boundaries where the implementation isn’t resolved until run time.
Use code maps to debug your applicationsYes

Reference link: Build

FeatureSupported with XamarinAdditional Comments
On-premises TFS serverYesBuild machines must have Xamarin installed and can be linked to an OSX computer to build for iOS. See Configuring TFS for Xamarin (Xamarin website)
On-premises build server linked to Visual Studio Team ServicesYesSee Build server for instructions.
Hosted controller service of Visual Studio Team ServicesYesSee Build your Xamarin app.
Build definitions with pre- and post-scriptsYes
Continuous integration including gated check-insYesGated check-ins for TFVC only as Git works on a pull-request model rather than check-ins.

Reference link: Testing the application

FeatureSupported with XamarinAdditional Comments
Planning tests, creating test cases and organizing test suitesYes
Manual testingYes
Test Manager (record and playback tests)YesWindows devices and Android emulators only from Visual Studio. Recording for all devices is possible with Xamarin Test Recorder.
Code coveragen/a
Unit Test Your CodeYesFor Windows and Android targets, the built-in MSTest tools can be used. To run unit tests on Windows, Android, and iOS, Xamarin recommends NUnit. See Configuring TFS for Xamarin (Xamarin website).
Use UI Automation To Test Your CodeWindows onlyVisual Studio's UI test recorder is Windows only. For all platforms, see Xamarin Test Recorder.

Reference link: Improve Code Quality

FeatureSupported with XamarinAdditional Comments
Analyzing Managed Code QualityYes
Finding Duplicate Code by using Code Clone DetectionYes
Measuring Complexity and Maintainability of Managed CodeYes
Performance ExplorerNoUse the Xamarin Profiler through Xamarin Studio instead. Note that the Xamarin Profiler is currently in preview and does not yet work for Windows targets.
Analyze .NET Framework memory issuesNoVisual Studio tools do not have hooks into the Mono framework for profiling.

Reference link: Automate deployments with Release Management

FeatureSupported with XamarinAdditional Comments
Manage release processesYes
Deployment to servers for side-loading via scriptsYes
Upload to app storePartialExtensions are available that can automate this process for some app stores. See Extensions for Visual Studio Team Services; for example, the extension for Google Play.

Reference link: Monitor with HockeyApp

FeatureSupported with XamarinAdditional Comments
Crash analytics, telemetry, and beta distributionYes