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

7

我正在尝试运行此网站中的示例之一。

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

enter image description here

我现在使用的是Windows 10 SDK,不再使用SDK 8,因此我宁愿不安装这个SDK,而是使用新的SDK。我能否将这个项目移植到Windows 10应用程序中?

现在它是什么样子:

enter image description here


2
你想添加UWP(通用Windows平台)吗?这个教程应该可以帮助你入门:https://developer.xamarin.com/guides/xamarin-forms/platform-features/windows/installation/universal/。看起来这个教程是基于Xamarin Forms的,所以如果你使用最新版本的Xamarin Forms,它应该可以很好地与UWP一起使用。 - dylansturg
我知道自从我提出这个问题已经有一段时间了,但我回到这个问题上来,它仍然没有解决。你的评论并不完全是我所要求的,你可能没有正确理解我的意思。我已经更新了问题,并添加了一些细节。 - Piotrek
你使用的是 Visual Studio 2013 还是 2015? - NineBerry
1个回答

10
是的,可以进行移植。我建议在此解决方案中创建一个新项目(据我所见,大多数此git的解决方案已经添加了UWP支持),并重新做大部分工作。对于一些使用平台特定代码的项目,这种移植可能不起作用,因为从WP8到UWP的某些API已更改-正如您可能知道的那样。
完成此过程后,我仍然遇到问题-我没有有效的 .appxmanifest 文件,因此无法创建 .pfx 文件。这将始终警告证书文件丢失。
我不确定是否所有步骤都是必要的。我留给你作业 ;)
无论如何,这里我向您展示将 TodoREST 项目移植到 UWP 的步骤:
  • 卸载 iOS 和 Droid 项目将使此过程更容易
  • 卸载 Portable 和 WinPhone81 项目中的所有 nuget 包
  • 将可移植类配置文件更改为 Profile111 (取消选中 WP8 Silverlight 作为目标)
  • 现在您可以在可移植项目上重新安装 Xamarin.Forms 和 Newtonsoft.Json(卸载是必要的以更改配置文件-这是必要的,因为它会在这里引发某些错误)
  • 从 WinPhone81 项目中删除 app.config
  • 在 WinPhone81 项目中添加一个 project.json 文件,并放入以下内容:
  • {
        "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>
    
  • 对于每个具有Condition=...PropertyGroup,将DefineConstants中的WINDOWS_PHONE_APP替换为WINDOWS_UAP

  • 保存
  • 在Visual Studio中重新加载项目
  • 编辑MainPage.xaml并将<forms:WindowsPhonePage改为<forms:WindowsPage,将表单命名空间改为using:Xamarin.Forms.Platform.UWP(从.WinRT
  • 由于某种原因我不得不重新启动VS2015,因为它没有注意到project.json文件
  • 启动项目并进行调试!
  • 希望这回答了你的问题。


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接