3

I'm working on a UWP application that has both a UWP app and a small Win32 program, linked from a UWP packaging project. My solution looks something like this:

  • OneLocker (UWP)
  • OneLocker.AutoTyper (Win32, WinForms in particular)
  • OneLocker.Package (with references to the two above)

This all works fine, and if I try to create an app package just for the UWP application, I see all the various ARM/ARM64/x86/x64 options (enter image screen here), as I've followed the guide here to add the new ARM64 configuration.

The problem is that when I try to build the whole Package, including both the UWP app and the Win32 program, I only see the x86/x64 options (enter image screen here). Here is the complete .csproj file for the Win32 program in the package.

Now, I'm not 100% sure here, but from what I understand it should be possible to also build a UWP package project for ARM64 now, so that it'll run on devices with Windows on ARM without the need for the x86 to ARM emulation, right?

If so, is there something specific I need to add to my projects, or something to configure, in order to enable the ARM64 build configuration for the packaging project as well? Or, is this even supported already at the moment?

The only blog post I found about this (this one) only mentiones C++ UWP/Win32 applications, and not UWP packaging projects.

Thanks!

EDIT: here's some clarification on what I'm trying to do. The main point for me is: I want to be able to build the app package (UWP + Win32) for ARM64 as well, so that users running Windows on ARM can use that instead of either the x86 package (which would be slower, as it'd be emulated), or the standalone UWP app in ARM64 (which would run fine, but lack the additional features of the package).

As I've mentioned earlier, this is what I see from the build window for the packaging project. I'm aware that WinForms doesn't support ARM64, and in fact I'd be perfectly fine having just the UWP app in the package built for ARM64, and the Win32 part in Any CPU. The thing is that if I pick the Neutral/ARM64 combo from the first line (see the linked image), I then can't also pick the x86/x64 targets, as VS tells me I can't mix specific and neutral architectures in the same package.

To recap, here's what I'd want, in theory:

  • x86 package (x86 UWP and WinForms) ✔
  • x64 package (x64 UWP and WinForms) ✔
  • ARM64 package (ARM64 UWP and Any CPU WinForms) ❌
  • ARM standalone UWP app ✔

Is there any way to achieve this?

Sergio0694
  • 4,447
  • 3
  • 31
  • 58
  • Have you installed the 'Visual C++ compilers and libraries for ARM64' individual component successfully? – Xie Steven Dec 05 '18 at 06:11
  • @XavierXie-MSFT Yes I have, and in fact I can build the UWP app directly just fine in ARM64. As I said in my answer though, I don't have the same option wwhen building the whole package though (UWP + Win32 component). From there I only have either Release x86/x64, or Release ARM64 which is marked as "Neutral architecture", so I can't pick it together with the x86/x64 architectures in the same build. Is there a way to configure the ARM64 build from there just like when building the UWP project directly? Thanks! – Sergio0694 Dec 05 '18 at 09:42

1 Answers1

0

The Windows Packaging Project will produce ARM64 packages if the referenced projects support this architecture. Actually WinForms, or any other .NET Framework, do not support ARM64.

You can produce a bundle supporting different architectures that will optimize your UWP components and use the AnyCPU version for the WinForms.

Can you describe your application requirements and which architectures would you like to support in your packages?

Thanks, Rido

rido
  • 1,202
  • 1
  • 9
  • 13
  • Hi, I've updated my question with additional info to clarify what I'm trying to do. Thank you for your help! – Sergio0694 Dec 07 '18 at 09:36