无法从 UWP 打包项目 (UWP + Win32) 中构建 ARM64 版本

3
我正在开发一个UWP应用程序,其中包含一个UWP应用和一个小型的Win32程序,从UWP打包项目中链接。我的解决方案看起来像这样:
  • OneLocker (UWP)
  • OneLocker.AutoTyper (Win32, 特别是WinForms)
  • OneLocker.Package (引用了上述两个)
这一切都很好运行,如果我尝试仅为UWP应用程序创建应用程序包,我会看到各种ARM/ARM64/x86/x64选项(在此输入图像屏幕),因为我已经按照指南here添加了新的ARM64配置。
问题是当我尝试构建整个包,包括UWP应用程序和Win32程序时,我只看到了x86 / x64选项(在这里输入图像屏幕)。 这里是该包中Win32程序的完整 .csproj 文件。
现在,我不确定百分之百,但据我所知,现在应该也可以为ARM64构建UWP软件包项目,以便在Windows设备上运行而无需x86到ARM仿真,对吗?
如果是这样,那么我需要在我的项目中添加特定的内容或进行配置,以启用打包项目的ARM64构建配置吗?或者,这已经得到支持了吗?

我只找到了一篇关于此事的博客文章(this one),它只提到了C++ UWP/Win32应用程序,而没有提到UWP打包项目。

谢谢!

编辑:这里有一些我正在尝试做的澄清。对我来说,主要问题是:我想能够为ARM64构建应用程序包(UWP + Win32),以便在运行Windows on ARM的用户可以使用它,而不是使用x86包(因为它将被模拟,速度较慢),或者独立的UWP应用程序在ARM64上(虽然它可以正常运行,但缺少包的其他功能)。

如我之前所提到的,this 是我在打包项目时从构建窗口看到的。我知道WinForms不支持ARM64,实际上,如果我只需要为ARM64构建UWP应用程序包,而将Win32部分构建为Any CPU,我会非常满意。问题是,如果我选择第一行中的Neutral/ARM64组合(请参见链接的图像),那么我就不能同时选择x86/x64目标,因为VS告诉我不能在同一个包中混合特定和中性架构。

总之,这是我理论上想要的:

  • x86包(x86 UWP和WinForms) ✔
  • x64包(x64 UWP和WinForms) ✔
  • ARM64包(ARM64 UWP和任意CPU WinForms) ❌
  • 独立的ARM UWP应用 ✔

有没有办法实现这个?


你是否已经成功安装了适用于ARM64的“Visual C++编译器和库”组件? - Xie Steven
@XavierXie-MSFT 是的,我可以直接在ARM64上构建UWP应用程序。但是,正如我在答案中所说的那样,在构建整个包(UWP + Win32组件)时,我没有相同的选项。从那里开始,我只有Release x86 / x64或Release ARM64可用,后者标记为“中性架构”,因此我无法在同一构建中选择它与x86 / x64架构一起使用。是否有一种方法可以像直接构建UWP项目时那样配置ARM64构建?谢谢! - Sergio0694
1个回答

0

如果所引用的项目支持此架构,Windows 打包项目将生成 ARM64 包。实际上,WinForms 或任何其他 .NET Framework 都不支持 ARM64。

您可以生成支持不同架构的捆绑包,优化您的 UWP 组件并使用 AnyCPU 版本的 WinForms。

您能描述一下您的应用程序要求以及您想在包中支持哪些架构吗?

谢谢, Rido


嗨,我已经更新了我的问题,并提供了额外的信息来澄清我想要做什么。谢谢你的帮助! - Sergio0694

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