将Xamarin Windows 8应用程序移植到Windows 10 SDK

时间:2016-04-09 19:18:54

标签: c# xamarin

我正在尝试运行其中一个样本from this site

问题是:为Windows 8制作了项目。当我在Visual Studio中打开解决方案时,它告诉我需要安装Windows 8 SDK才能继续。

enter image description here

我现在正在使用Windows 10 SDK,我将不再使用SDK 8,所以我宁愿不安装此SDK并使用新的一个intead。我可以以某种方式将此项目移植到Windows 10应用程序吗?

现在看起来如何:

enter image description here

1 个答案:

答案 0 :(得分:10)

是的,移植是可能的。我建议在这个解决方案中创建一个新项目(这个git的大多数解决方案已经添加了UWP支持,如我所见)并重做大多数东西。在一些使用平台特定代码的项目中,这种移植可能不起作用,因为一些API从WP8变为UWP - 正如您可能知道的那样。

在此过程之后我仍然遇到问题 - 我没有工作.appxmanifest文件,所以我无法创建.pfx文件。这会一直警告您缺少certifcate文件。

我不确定是否所有步骤都是必要的。我把它留作家庭作业;)

无论如何,在这里,我向您展示了将TodoREST项目移植到UWP的步骤:

  • 卸载iOS和Droid项目将使这更容易
  • 从Portable和WinPhone81项目中卸载所有nuget包
  • 将便携式班级个人资料更改为Profile111(取消选中WP8 Silverlight作为目标)
  • 现在你可以在便携式项目上重新安装Xamarin.Forms和Newtonsoft.Json(卸载是必要的,以便更改配置文件 - 这是必要的,因为它在这里引发了一些错误)
  • 从WinPhone81项目中删除app.config
  • project.json文件添加到WinPhone81项目并输入以下内容:

    {
        "dependencies": {
            "Microsoft.NETCore.UniversalWindowsPlatform": "5.0.0",
            "Xamarin.Forms": "2.0.0.6482"
        },
        "frameworks": {
            "uap10.0": { }
        },
        "runtimes": {
            "win10-arm": { },
            "win10-arm-aot": { },
            "win10-x86": { },
            "win10-x86-aot": { },
            "win10-x64": { },
            "win10-x64-aot": { }
        }
    }
    
  • 保存所有内容并关闭WinPhone81项目

  • 在文件资源管理器中,转到文件夹并编辑Package.appxmanifest

    • 通过以下方式交换包裹标签:

      <Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:m3="http://schemas.microsoft.com/appx/manifest/uap/windows10" IgnorableNamespaces="m3 mp"> 
      
    • 删除...并添加以下内容:

      <Dependencies>
          <TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.0.0" MaxVersionTested="10.0.0.0"/>
      </Dependencies>
      
  • 编辑TodoREST.WinPhone81.csproj:

    • 首先<PropertyGroup>替换<TargetPlatformVersion>

      <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>
      <TargetPlatformVersion>10.0.10586.0</TargetPlatformVersion>
      <TargetPlatformMinVersion>10.0.10586.0</TargetPlatformMinVersion>
      
    • ProjectTypeGuids更改为

      <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
      
    • PropertyGroup Condition=...WINDOWS_PHONE_APP替换WINDOWS_UAP

    • 中的<forms:WindowsPhonePage
    • 保存
  • 在Visual Studio中重新加载项目
  • 修改MainPage.xaml并将<forms:WindowsPage更改为using:Xamarin.Forms.Platform.UWP,并将命名空间格式化为.WinRT(来自 num1 / \ num2,num3 num4,num5
  • 这里我因任何原因不得不重新启动VS2015,因为它没有注意到project.json
  • 启动项目并进行调试!

我希望这能回答你的问题。