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

Pio*_*rek 7 c# xamarin

我正试图从这个网站运行一个样本.

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

在此输入图像描述

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

它现在看起来如何:

在此输入图像描述

Mat*_*att 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": { }
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 保存所有内容并关闭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"> 
      
      Run Code Online (Sandbox Code Playgroud)
    • 删除...并添加以下内容:

      <Dependencies>
          <TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.0.0" MaxVersionTested="10.0.0.0"/>
      </Dependencies>
      
      Run Code Online (Sandbox Code Playgroud)
  • 编辑TodoREST.WinPhone81.csproj:

    • 首先<PropertyGroup>替换<TargetPlatformVersion>为:

      <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>
      <TargetPlatformVersion>10.0.10586.0</TargetPlatformVersion>
      <TargetPlatformMinVersion>10.0.10586.0</TargetPlatformMinVersion>
      
      Run Code Online (Sandbox Code Playgroud)
    • 更改ProjectTypeGuids

      <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
      
      Run Code Online (Sandbox Code Playgroud)
    • 在每个PropertyGroup使用DefineConstants中的Condition=...替换WINDOWS_PHONE_APPWINDOWS_UAP

    • 保存
  • 在Visual Studio中重新加载项目
  • 编辑MainPage.xaml并更改<forms:WindowsPhonePage<forms:WindowsPage和表单命名空间using:Xamarin.Forms.Platform.UWP(从.WinRT)
  • 在这里我不得不因为任何原因重启VS2015,因为它没有注意到project.json
  • 启动项目并进行调试!

我希望这回答了你的问题.