These are summaries of the first three episodes of the Windows 10 Preview Jumpstart series (starring Jerry Nixon and Andy Wigley. While the Jumpstart information is incredibly valuable, sometimes you just don’t have time to watch the whole thing, so I’m trying to get the information in a nice readable format.
01 Getting Started – 44 minutes long
Summary: Here is Visual Studio 2015, here’s the 10,000 foot overview of the Universal App Platform (UAP), which is the way to build cross-device applications. The goal of UAP is to define a consistent set of functionality that lives across all devices running Windows.
Actual code: Not much. Some XML for adding Extension SDKs to have features light up on specific devices.
There is a slide on how to target UAP platforms going forward. Developers can using the following definition in the .appxmanifest file:
<TargetPlatform Name=”Microsoft.Universal” minVersion=”22.214.171.124″ maxVersionTested=”126.96.36.199″ />
02 Start Simple: Hello World – 15 minutes
Summary: Let’s show how UAP apps run. Talk about the structure of a UAP app and throw together a simple application.
Actual code: At about 10:00, Jerry tosses together a quick data-driven app using Blend and design-time data and runs it on the phone emulator and as a desktop app.
03 Migrating 8.1 Apps to Windows 10 – 53 minutes
Summary: UAP is a superset of Windows 8.0 and 8.1. There is no “right-click to upgrade” yet in visual studio, but they have put together a project upgrade PowerShell script that handles most of the necessary changes. There is a demo of this script running on the Contoso Cookbook sample app from Windows Phone 8.1 that starts at 14:00.
The bulk of this video is that conversion process. They add Extension SDKs to handle device-specific functionality, change some capability syntax in the app manifest, and add adaptive code that detects which functionality is active or inactive on a given device.
Toward the end, Andy takes a Windows 8.1 Universal App and converts it to a Windows 10 UAP app. It is a pretty valuable demo and I highly recommend it for understanding the updates in project structure.
Actual Code: There are the following code demos:
14:00 – 19:00 – run the upgrade script and see how to handle some common upgrade errors
27:00 – 33:00 – Andy implements an adaptive code strategy to handle phone-specific functionality. He changes the PhoneAccentBrush to SystemControlAccentBrush, changes the file picker from Windows Phone 8.1 to PickSingleFileAsync() to handle importing an image, and gets rid of the #if statements so the application compiles to a single binary.
36:00-52:00 – This is an extremely valuable demo and I highly recommend you watch the whole thing. Andy creates a Windows 8.1 Hub app Windows / Windows Phone project. This application is a Shared code / separate head app. He adds a blank UAP app to the project and deletes the MainPage.xaml from that. Then he adds a reference to the Shared project from the 8.1 Universal app. He copies all the pages from the Windows Phone 8.1 app into the UAP app and changes the root frame in the App.xaml.cs.
He has to change some styles to complete compilation. Then he goes into the NavigationHelper.cs file and adds a #elif WINDOWS_UAP so the NavigationHelper works in a UAP app. He adds Windows Mobile Extension SDK to the references to manage the back button.
Lastly, he adds a folder to the UAP project called “DeviceFamily-Desktop” and copies the views and code behind (.xaml and .xaml.cs files) from the Windows 8.1 app into that folder. Now the app runs, but he changes the MaxWidth on the HubPage.xaml to make it look a little nicer in the window.
Specific Changes for 8.1 – 10 app updates:
Project File Updates
Add Publisher in PackageDependency
<Dependencies> <PackageDependency Name="Microsoft.VCLibs.120.00.Phone" MinVersion="12.0.30113.0" /> </Dependencies>
<Dependencies> <PackageDependency Name="Microsoft.VCLibs.120.00.Phone" MinVersion="12.0.30113.0" Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" /> </Dependencies>
Package.appxmanifest edits (not handled in the Powershell script)
Add uap: prefix to some capabilities and extensions
<Capabilities> <Capability Name="picturesLibrary"/> <Capability Name="picturesLibrary"/> <Capability Name="picturesLibrary"/> </Capabilities> <Application> <Extension Category="windows.protocol"> <Protocol Name="mailto" DesiredView="useHalf"> <DisplayName>MailTo Protocol</DisplayName> </Protocol> </Extension> </Application>
<Capabilities> <uap:Capability Name="picturesLibrary"/> <uap:Capability Name="picturesLibrary"/> <uap:Capability Name="picturesLibrary"/> </Capabilities> <Application> <uap:Extension Category="windows.protocol"> <uap:Protocol Name="mailto" DesiredView="useHalf"> <uap:DisplayName>MailTo Protocol</uap:DisplayName> </uap:Protocol> </uap:Extension> </Application>
If upgrading Windows 8.1 app, change tile size
Square30x30Logo is now Square44x44Logo
Square70x70Logo is now Square71x71Logo