James
Montemagno
Principal Program Manager – Mobile Developer Tools,
Microsoft
motz@microsoft.com motzcod.es @JamesMontemagno
Weekly development podcast
mergeconflict.fm
Weekly development show
xamarinshow.com
Visual Studio
Visual Studio for Mac
Visual Studio Code
Visual Studio Mobile Center
Visual Studio Team Services
Download now at
www.visualstudio.com
Announcing
Visual Studio 2017
General Availability
FUNDAMENTALS CLOUD MOBILE DEVOPS
Photo used under CC http://www.wocintechchat.com/
Getting Started with Visual Studio 2017
Demo
PRODUCTIVITY
BOOSTED
FOUNDATION
STREAMLINED
Trends
Software development is a team sport
Agile & DevOps change the flow
Individual productivity still matters
<//>
public async
Task<int>
{int x = await task;
Development flows left to right and repeats
We can do better
Tighten the cycle
Catch issues before check-in
Identify issues in production
<//>
Continuous integration + real-time experiences = shift left
public async
Task<int>
{int x = await task;
<//>
public async
Task<int>
{int x = await task;
Edit and continue – pulled debugging into the edit/build cycle
<//>
public async
Task<int>
{int x = await task;
<//>
public async
Task<int>
{int x = await task;
Live unit testing – pulls quality further into the inner loop
<//>
public async
Task<int>
{int x = await task;
<//>
public async
Task<int>
{int x = await task;
Live code analysis – immediate feedback loop
<//>
public async
Task<int>
{int x = await task;
docs.microsoft.com/en-us/dotnet/articles/csharp/csharp-7
private static (int Max, int Min) Range(IEnumerable<int> numbers)
{
int min = int.MaxValue;
int max = int.MinValue;
foreach(var n in numbers)
{
min = (n < min) ? n : min;
max = (n > max) ? n : max;
}
return (max, min);
}
var range = Range(numbers);
Or
(int min, int max) = Range(numbers);
public static int DiceSum4(IEnumerable<object> values)
{
var sum = 0;
foreach (var item in values)
{
switch (item)
{
case 0: break;
case int val: sum += val; break;
case IEnumerable<object> subList when subList.Any():
sum += DiceSum4(subList);
break;
case IEnumerable<object> subList:
break;
case null:
break;
default:
throw new InvalidOperationException("unknown item type");
}
}
return sum;
}
Photo used under CC http://www.wocintechchat.com/
Demo
CONTAINERS
MADE EASY
.NET CORE
CLOUD NATIVE
Hybrid
INFRASTRUCTURE
DEVOPS
APPLICATIONS
APP FRAMEWORKS
DATABASES & MIDDLEWARE
Compilers Languages Runtime components
COMMON INFRASTRUCTURE
.NET STANDARD LIBRARY
TOOLS
$_
.NET STANDARD LIBRARY
One library to rule them all
Cross-platform
Fast
Lightweight
Open source
Announcing
.NET Core Tooling
1.0
Visual Studio 2017
.NET Core CLI
www.dot.net/core
Cloud
development
optimized
.NET
Azure
Visual Studio
+
+
Photo used under CC http://www.wocintechchat.com/
Demo
5-STAR APPS
MADE EASY
1 Year anniversary:
Xamarin joins Microsoft
Android Nougat
Open Source Xamarin.Android
Open Source Xamarin.Forms
Xamarin included in Visual Studio InspectorXamarin.Forms Native Embedding
Xamarin.Forms Previewer Visual Studio for Mac Preview Platform Specifics
iOS 10 .NET Standard
Xamarin.Forms URL Navigation
Remote iOS Simulator on Windows
MIT License Mono
Embedded Native Controls
Multi-process debugging on MacOpen Source Xamarin.iOS WatchOS 3
Open Source Xamarin.Mac Workbooks
Xamarin.Forms Tizen
BitCode support
TLS 1.2Hybrid AOT
Vulkan API
Skia 2D Graphics
Xamarin: Anything you can do in Objective-C,
Swift, or Java, you can do in C# and Visual Studio
• Native user interface
• High-fidelity API access
• Native performance
Shared C# logic
Windows C# UIAndroid C# UIiOS C# UI
Xamarin’s unique approach
Shared C# codebase • 100% native API access • High performance
Xamarin Native approach
3 Native User Interfaces
Shared App Logic
Shared C# Logic
Windows C#Android C#iOS C#
Xamarin.Forms approach
Shared C# Logic
Shared UI Code
Shared (Native) User Interfaces
Shared App Logic
How Xamarin Works
Windows APIs
Microsoft.Phone Microsoft.Networking Windows.Storage Windows.Foundation Microsoft.Devices
System.Data System.Windows System.Numerics System.Core System.ServiceModel
System.Net System System.IO System.Linq System.Xml
C#
Android – 100% API coverage
Text-to-speech ActionBar Printing Framework Renderscript NFC
System.Data System.Windows System.Numerics System.Core System.ServiceModel
System.Net System System.IO System.Linq System.Xml
C#
iOS – 100% API coverage
MapKit UIKit iBeacon CoreGraphics CoreMotion
System.Data System.Windows System.Numerics System.Core System.ServiceModel
System.Net System System.IO System.Linq System.Xml
C#
Native performance
Xamarin.iOS does full Ahead Of Time
(AOT) compilation to produce an ARM
binary for Apple’s App Store.
Xamarin.Android takes advantage
of Just In Time (JIT) compilation on
the Android device.
ARM
BINARY
Runs
natively
.APPAOT
.NET
C#
Bindings
.APKCompile
and Link
.NET
C#
Bindings
IL
+
JIT
Runs
natively
.NET
C#
Bindings
✓ Always up-to-date
Same-day
support:
• iOS 5
• iOS 6
• iOS 7
• iOS 8
• iOS 9
• iOS 10
Full support for:
• Apple Watch
• Apple TV
• Android Wear
• Amazon Fire TV
• Google Glass
• and much more
Inspector
Profiler
Forms previewer
iOS simulator
Connected services
Workbooks
New templates
Test recorder
Photo used under CC http://www.wocintechchat.com/
Building native mobile apps with
Xamarin for Visual Studio 2017
Demo
Download now at
www.visualstudio.com
Announcing
Visual Studio 2017
General Availability
+500
extensions
116
launch partners
Visual Studio 2017 launch partners
Pluralsight: 1 year full catalog
Office 365 Dev: 25 seats
Parasoft: 6 months
WhiteSource: 6 months
Announcing
New value for Visual Studio
Enterprise subscribers
Announcing
New value for Visual Studio
Dev Essentials members
Opsgility: 3 months of Azure and DevOps training
Xamarin University Training Classes
Azure Credits
So Much More
aka.ms/devessentials
A mobile-first, cloud-first IDE. Made for the Mac.
Native mobile and Mac apps in C#
Build from the client to the cloud
Announcing
Visual Studio for Mac
Preview 5
Lets developers build apps, not ops
Easy to adopt
Ready for the enterprise
aka.ms/mobilecenter
Announcing
Visual Studio Mobile Center
Preview
FUNDAMENTALS CLOUD MOBILE DEVOPS
• visualstudio.com
• xamarin.com
• github.com/jamesmontemagno/MyItems-VS2017
• aka.ms/devessentials
• launch.visualstudio.com
Thank you.
James
Montemagno
Principal Program Manager – Mobile Developer Tools,
Microsoft
motz@microsoft.com motzcod.es @JamesMontemagno
Weekly development podcast
mergeconflict.fm
Weekly development show
xamarinshow.com

Visual Studio 2017 Launch Event