无法通过UWP打包项目(UWP + Win32)为ARM64构建

时间:2018-11-26 14:30:23

标签: c# uwp windows-10-universal desktop-bridge windows-10-desktop

我正在开发一个UWP应用程序,该应用程序既包含UWP应用程序又包含一个小型的Win32程序,并与UWP打包项目链接。我的解决方案如下所示:

  • OneLocker(UWP)
  • OneLocker.AutoTyper(尤其是Win32,WinForms)
  • OneLocker.Package(引用了上面两个)

这一切都很好,如果我尝试为UWP应用程序创建一个应用程序包,则会看到所有各种ARM / ARM64 / x86 / x64选项(enter image screen here),就像我遵循的那样。指导here添加新的ARM64配置。

问题是,当我尝试构建整个程序包(包括UWP应用程序和Win32程序)时,只看到x86 / x64选项(enter image screen here)。为软件包中的Win32程序Here is完整的.csproj文件。

现在,我不是100%确定,但是据我了解,现在应该也可以为ARM64构建UWP软件包项目,这样它就可以在装有Windows on ARM的设备上运行而无需x86到ARM的仿真,对吧?

如果是这样,是否还需要添加一些特定的东西或要配置的东西,以便也为打包项目启用ARM64构建配置?或者,目前是否已经对此提供支持?

我发现的关于此(this one)的唯一博客文章仅提及C ++ UWP / Win32应用程序,而不涉及UWP打包项目。

谢谢!

编辑:以下是我要尝试做的一些说明。对我来说,主要要点是:我也希望能够为ARM64构建应用程序包(UWP + Win32),以便在ARM上运行Windows的用户可以使用它而不是x86包(这会比较慢,因为它会被模拟),或者是ARM64中的独立UWP应用(可以正常运行,但缺少程序包的其他功能)。

正如我之前提到的,this是我从打包项目的构建窗口中看到的。我知道WinForms不支持ARM64,实际上,在为ARM64构建的软件包中仅包含UWP应用程序,而在任何CPU中包含Win32部分,我都很好。问题是,如果我从第一行中选择Neutral / ARM64组合(请参阅链接的图像),那么我也就无法选择x86 / x64目标,因为VS告诉我我不能在其中混合特定架构和中立架构相同的包裹。

回顾一下,理论上,这就是我想要的:

  • x86软件包(x86 UWP和WinForms)✔
  • x64程序包(x64 UWP和WinForms)✔
  • ARM64软件包(ARM64 UWP和任何CPU WinForms)❌
  • ARM独立UWP应用✔

有什么办法可以做到这一点?

1 个答案:

答案 0 :(得分:0)

如果引用的项目支持此体系结构,则Windows打包项目将生成ARM64软件包。实际上,WinForms或任何其他.NET Framework不支持ARM64。

您可以生成一个支持不同体系结构的捆绑软件,这些捆绑软件将优化您的UWP组件,并为WinForms使用AnyCPU版本。

您能否描述您的应用程序需求以及您的软件包中要支持的体系结构?

谢谢, 里多(Rido)