将Win8.1/WP8.1应用迁移到Universal Windows Platform

在上一篇在VS2015 RC打开CTP中创建的工程,我们介绍了怎么在RC中打开CTP中创建的Universal 工程,这一篇我们来讲下怎么将Windows 8.1/WP8.1的应用迁移到Universal Windows Platform上。

2015RC中,我们可以将8.1的应用迁移到统一平台上,进而使用新的API进行开发,下面我们使用wp8.1的应用作为例子讲解下步骤。

1. 首先我们使用2015打开之前的工程。

2. 右键点击工程,选择“卸载项目”。

3. 右键点击工程,选择“编辑XXX.csproj”

4. 和上一篇一样,取得平台版本号,路径是“\Program Files (x86)\Windows Kits\10\Platforms\UAP

下面就开始修改工程文件了

5. 找到个包含子节点TargetPlatformVersion、且值为8.1的PropertyGroup节点(其实一般第一个PropertyGroup就是了),进行下面的修改:

  • Platform的值改成x86
  • 添加TargetPlatformIdentifier节点,值为UAP
  • TargetPlatformVersion的值改成4中取得的版本号
  • 添加TargetPlatformMinVersion节点,值为4中的版本号
  • MinimumVisualStudioVersion的值改成14
  • ProjectTypeGuids的值改成{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
  • 添加EnableDotNetNativeCompatibleProfile节点,值为true

6. 把所有的vs版本从12.0替换成14.0,这一步直接替换即可(CTRL+H)

7. 删掉配置为AnyCPU的PropertyGroup节点

8. 查看剩下配置是Release的PropertyGroup节点,如果下面没有UseDotNetNativeToolchain子节点的话,就动手加一个,值一定要是true, 即:<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>

9. 如果是手机项目的话,还需要删除下面这个节点

10. 现在重新加载我们的工程,会发现工程类型变成了Windows Universal了!下面还是需要修改manifest。

11. 打开manifest文件,首先我们需要替换掉所有的schema,把Package节点用下面这段替换。

<Package
    xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
    xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
    xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"
   IgnorableNamespaces= "uap mp">

对于Win8.1应用,还需要额外添加mp:PhoneIdentity的节点,如下,其中PhoneProductId就是Identity的Name, PhonePushedId目前是固定的值

    <Identity Name="fe8a6971-8349-489b-8941-83dd308e9b9b"
              Publisher="CN=xxxxxxx"
              Version="1.0.0.0" />

    <mp:PhoneIdentity PhoneProductId="fe8a6971-8349-489b-8941-83dd308e9b9b" PhonePublisherId="00000000-0000-0000-0000-000000000000"/>

12. 在Package下添加如下子节点,其中的版本号就是我们之前一直用的

<Dependencies>
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.10069.0" MaxVersionTested="10.0.10069.0" />
</Dependencies>

13. 删除Prerequisites节点

14. 检查你的Resources节点,如果是用到了ScaleDXFeatureLevel的话,为他们加上uap命名空间,如下

    <Resources>
        <Resource Language="x-generate"/>
        <Resource uap:Scale="180"/>
        <Resource uap:DXFeatureLevel="dx11"/>
    </Resources>

15. 检查你的Capability节点,如果使用声明了下列这些权限,需要加上uap命名空间。

  • documentsLibrary
  • picturesLibrary
  • videosLibrary
  • musicLibrary
  • enterpriseAuthentication
  • sharedUserCertificates
  • removableStorage
  • appointments
  • contacts

如:

<Capabilities>
  <uap:Capability Name="documentsLibrary"/>
  <uap:Capability Name="removableStorage"/>
</Capabilities>

16. 将VirsualElements节点及其子节点的命名空间改成uap

<uap:VisualElements
     DisplayName="App9"
     Square150x150Logo="Assets\Logo.png"
     Square44x44Logo="Assets\SmallLogo.png"
     Description="App9"
     BackgroundColor="transparent">
    <uap:DefaultTile Wide310x150Logo="Assets\WideLogo.png" Square71x71Logo="Assets\Square71x71Logo.png"/>
    <uap:SplashScreen Image="Assets\SplashScreen.png"/>
</uap:VisualElements>

对于Win8.1应用,这里需要注意的是,属性Square{SIZE}Logo中的size有了变化,70x70变成了71x71, 30x30变成44x44.

旧的:

<m2:VisualElements
    …
    Square30x30Logo="Assets\SmallLogo.png"
    …>
 <m2:DefaultTile
      …
      Square70x70Logo="images/70x70.png">
</m2:VisualElements>

新的:

<uap:VisualElements
    …
    Square44x44Logo="Assets\SmallLogo.png"
    …>
 <uap:DefaultTile
      …
      Square71x71Logo="images/70x70.png">
</uap:VisualElements>

17. 检查Extensions节点,为下列节点添加命名空间uap

  • windows.accountPictureProvide
  • windows.alarm
  • windows.appointmentsProvider
  • windows.autoPlayContent
  • windows.autoPlayDevice
  • windows.cachedFileUpdate
  • windows.cameraSettings
  • windows.fileOpenPicker
  • windows.fileTypeAssociation
  • windows.fileSavePicke
  • windows.lockScreenCall
  • windows.printTaskSettings
  • windows.protocol
  • windows.search
  • windows.shareTarget

如:

<Extensions>
  <uap:Extension Category="windows.alarm"/>
  <uap:Extension Category="windows.search" EntryPoint="MyActivateableClassId.baz"/>
  <uap:Extension Category="windows.protocol">
    <uap:Protocol Name="mailto" DesiredView="useHalf">
     <uap:DisplayName>MailTo Protocol</uap:DisplayName>
    </uap:Protocol>
  </uap:Extension>
</Extensions>

18. 为类型为chatMessageNotification的后台任务加上uap命名空间

如:

<Extension Category="windows.backgroundTasks" EntryPoint="Fabrikam.BackgroundTask" Executable="MyBackground.exe">
 <BackgroundTasks ServerName="MyBackgroundTasks">
    <uap:Task Type="chatMessageNotification"/>
  </BackgroundTasks>
</Extension>

19. 修改PackageDependency,添加Publisher和MinVersion属性

<Dependencies>
 <PackageDependency
      Name="Microsoft.VCLibs.120.00"
      Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US"
      MinVersion="12.0.30113.0" />
</Dependencies>

20. 将类型为gattCharacteristicNotification 和rfcommConnection的后台任务替换为Bluetooth类型。

<Extension Category="windows.backgroundTasks" EntryPoint="Fabrikam.BackgroundTask" Executable="MyBackground.exe">
<BackgroundTasks ServerName="MyBackgroundTasks">
           <Task Type="bluetooth"/>
</BackgroundTasks>
</Extension>

21. 使用新的bluetooth capability替换bluetooth.rfcomm和bluetooth.genericAttributeProfile

旧的:

<Capabilities>
  <m2:DeviceCapability Name="bluetooth.rfcomm">
    <m2:Device Id="any">
     <m2:Function Type="serviceId:34B1CF4D-1069-4AD6-89B6-E161D79BE4D8"/>
    </m2:Device>
  </m2:DeviceCapability>
  <m2:DeviceCapability Name="bluetooth.genericAttributeProfile">
    <m2:Device Id="any">
     <m2:Function Type="name:heartRate"/>
    </m2:Device>
  </m2:DeviceCapability>
</Capabilities>

新的:

<Capabilities>
  <uap:DeviceCapability Name="bluetooth"/>
</Capabilities>

22. 删除Windows.contact和windows.contactPicker扩展

23. 删除VisualElements的ForgroundText和ToastCapable属性

24. 删除DefaultTitle的DefaultSize属性

25. 删除ApplicationView节点

26. 到此manifest文件就修改完了,保存吧!虽然看上去步骤有点多,其实17之后的很多步骤可能是用不到的

27. 下面我们需要删除一些额外的文件

  • 检查解决方案目录下的子目录"\.vs\{project name}\v14",如果存在".suo"文件,删掉它
  • 删除掉工程目录下所有的后缀为.csproj.user文件

现在我们的工程就已经成功的迁移到了Universal Windows Platform了,但是对于很多应用来说,还是需要进一步修改code,因为Windows 10的很多API都有了变化。

时间: 2024-11-02 20:35:50

将Win8.1/WP8.1应用迁移到Universal Windows Platform的相关文章

Windows.Andy.Code4App.dll Win8.1/WP8.1通用类库@ver1.0.1

在上篇 Windows.Andy.Code4App.dll  Win8.1/WP8.1通用类库@ver1.0.0 已经对Win8.1和WP8.1部分扩展通用类库做了说明,这篇继续对通用类库做扩展.写的不好,还请各路大神多多指教~ Windows.Andy.Code4App  Win8.1/WP8.1通用类库@ver1.0.1项目结构: 比较上个1.0.0可以看到多了以下扩展:Async(异步类). Converter(转换类).Device(设备类).Encrypt(加密类).Helper(帮助

Windows.Andy.Code4App.dll Win8.1/WP8.1通用类库@ver1.0.0

直接入题! Win8.1和WP8.1眼下已经渐渐融为一体,WP8.1不断向Win8.1靠拢,虽然一些方法上WP8.1和Win8.1不同(ps:WP8.1和Win8.1的不同之处),但大部分还是相同的. 为了方便能够在WP8.1和Win8.1调用同样的方法,减少不必要的麻烦,现将我个人总结的一些简单的方法封装一下.代码很简单,不妥之处,还请各路大神多多指教~ Windows.Andy.Code4App.dll项目工程结构如下: 一.Extension: 1.CommandEx: 主要是使用依赖属性

DNS从服务器迁移(基于windows为主,linux为从实现同步)

系统环境: CentOS release 6.6 (Final) Linux 2.6.32-504.el6.x86_64 DNS主:192.168.10.251(windows) DNS从:192.168.10.250(linux) 安装bind服务 # yum install  bind-libs  bind-utils  bind 编辑配置文件: # vim /etc/named.conf options {listen-on port 53 { 127.0.0.1;192.168.10.2

我看操作系统的发展

截止到今天,也就是本文下笔的2017年2月12日,我接触过很多操作系统,于是就产生了一个想法,那就是把这些零碎的东西用一根线穿起来,作为我个人的知识库的一部分-- 本文主要介绍一些重量级的操作系统的前世今生. 桌面级:Windows,Linux,Unix 移动级:Android,iOS,Windows phone 嵌入式:VxWorks等一干RTOS 1. Windows Windows来源于Microsoft公司,是世界上最负盛名的桌面操作系统,它的前身是DOS(Disk Operating

UWP开发入门系列笔记之(一):UWP初览

随着微软Build2015带来的好消息,Win10正式版发布的日子已经离我们越来越近了,我们也终于欣喜地看到:一个统一的Windows平台对于开发人员来说充满了吸引力,这局棋下的好大的说……于是顺其自然的,又开始了新一轮追随微软的脚步. 1. What Universal Windows Platform(UWP)是什么呢?首先的说一说什么叫Device Family. 微软的产品布局主要有以下这么几个方面:传统的PC和新秀平板电脑2合1(苏菲婆),手机(特洛伊木马攻陷诺基亚现在脱胎换骨成Mic

Win10 UWP开发实现Bing翻译

微软在WP上的发展从原来的Win7到Win8,Win8.1,到现在的Win10 UWP,什么是UWP,UWP即Windows 10 中的Universal Windows Platform简称.即Windows通用应用平台,在Win 10 Mobile/Surface(Windows平板电脑)/PC/Xbox/HoloLens等平台上运行,uwp不同于传统pc上的exe应用也跟只适用于手机端的app有本质区别.它并不是为某一个终端而设计,而是可以在所有windows10设备上运行. 简单的说,u

一篇很好的解释了.Net Core, .Net Framework, .Net standard library, Xamarin 之间关系的文章 (转载)

Introducing .NET Standard In my last post, I talked about how we want to make porting to .NET Core easier. In this post, I’ll focus on how we’re making this plan a reality with .NET Standard. We’ll cover which APIs we plan to include, how cross-frame

ASP.NET Core 1.0 开发记录

参考页面: http://www.yuanjiaocheng.net/ASPNET-CORE/first.html http://www.yuanjiaocheng.net/ASPNET-CORE/asp-net-core-overview.html http://www.yuanjiaocheng.net/ASPNET-CORE/asp.net-core-environment.html http://www.yuanjiaocheng.net/ASPNET-CORE/newproject.h

ASP.NET Core官方计划路线及需要废除的一些Framework技术

概述 下面是 ASP.NET Core的时间表和路线图. 注意日期和特性都可能更改. 作为.NET Core这么大的一个项目,很难准确预测每一个计划的是否有变动. 即便如此,我们还是计划公开和透明的实施,以便我们的用户可以有正确的期望值, 并为我们的用户自己在技术实施时有更好的打算和安排 发布时间表 Release 发布日志 1.1 Q4 2016 / Q1 2017 1.2 Q1 2017 / Q2 2017 Release 版本特性 1.1 URL 重写中间件 Response 缓存中间件