Невозможно собрать для ARM64 из проекта упаковки UWP (UWP + Win32)

Я работаю над приложением UWP, в котором есть как приложение UWP, так и небольшая программа Win32, связанная из проекта упаковки UWP. Мое решение выглядит примерно так:

  • OneLocker (UWP)
  • OneLocker.AutoTyper (в частности, Win32, WinForms)
  • OneLocker.Package (со ссылками на два выше)

Все это работает нормально, и если я попытаюсь создать пакет приложения только для приложения UWP, я увижу все различные варианты ARM / ARM64 / x86 / x64 (введите здесь изображение экрана), как я следовал руководству здесь, чтобы добавить новую конфигурацию ARM64.

Проблема в том, что когда я пытаюсь собрать весь пакет, включая приложение UWP и программу Win32, я вижу только параметры x86 / x64 (введите здесь изображение экрана). Вот полный .csproj файл для программы Win32 в пакете.

Я не уверен здесь на 100%, но, насколько я понимаю, теперь должна быть возможность создать проект пакета UWP для ARM64, чтобы он работал на устройствах с Windows на ARM без необходимости использования x86 для Эмуляция ARM, да?

Если да, то есть ли что-то конкретное, что мне нужно добавить в мои проекты или что-то настроить, чтобы включить конфигурацию сборки ARM64 для проекта упаковки? Или это уже поддерживается?

Единственное сообщение в блоге, которое я нашел об этом (this one) упоминаются только приложения C ++ UWP / Win32, но не проекты упаковки UWP.

Спасибо!

ИЗМЕНИТЬ: вот некоторые пояснения относительно того, что я пытаюсь сделать. Для меня главное: Я хочу иметь возможность создать пакет приложения (UWP + Win32) также для ARM64, чтобы пользователи Windows на ARM могли использовать его вместо пакета x86. (что будет медленнее, так как оно будет эмулировано) или автономное приложение UWP в ARM64 (которое будет работать нормально, но не будет иметь дополнительных функций пакета).

Как я упоминал ранее, это я вижу в окне сборки для упаковочный проект. Я знаю, что WinForms не поддерживает ARM64, и на самом деле мне было бы хорошо иметь только приложение UWP в пакете, созданном для ARM64, и часть Win32 в любом процессоре. Дело в том, что если я выберу комбинацию Neutral / ARM64 из первой строки (см. Связанное изображение), я не смогу также выбрать цели x86 / x64, поскольку VS сообщает мне, что я не могу смешивать конкретные и нейтральные архитектуры в такой же пакет.

Напомним, что теоретически я бы хотел:

  • пакет x86 (x86 UWP и WinForms) ✔
  • пакет x64 (x64 UWP и WinForms) ✔
  • Пакет ARM64 (ARM64 UWP и WinForms для любых процессоров) ❌
  • Автономное приложение ARM UWP ✔

Есть ли способ добиться этого?


person Sergio0694    schedule 26.11.2018    source источник
comment
Вы успешно установили отдельные компоненты «Компиляторы и библиотеки Visual C ++ для ARM64»?   -  person Xie Steven    schedule 05.12.2018
comment
@ XavierXie-MSFT Да, да, и на самом деле я могу создать приложение UWP напрямую в ARM64. Однако, как я сказал в своем ответе, у меня нет такой же возможности при сборке всего пакета (компонент UWP + Win32). Оттуда у меня есть только Release x86 / x64 или Release ARM64, который помечен как нейтральная архитектура, поэтому я не могу выбрать его вместе с архитектурами x86 / x64 в той же сборке. Есть ли способ настроить сборку ARM64 оттуда так же, как при сборке проекта UWP напрямую? Спасибо!   -  person Sergio0694    schedule 05.12.2018


Ответы (1)


Проект упаковки Windows будет создавать пакеты ARM64, если упомянутые проекты поддерживают эту архитектуру. На самом деле WinForms или любой другой .NET Framework не поддерживает ARM64.

Вы можете создать пакет, поддерживающий различные архитектуры, который оптимизирует ваши компоненты UWP и будет использовать версию AnyCPU для WinForms.

Можете ли вы описать требования к вашему приложению и какие архитектуры вы хотели бы поддерживать в своих пакетах?

Спасибо, Ридо

person rido    schedule 07.12.2018
comment
Привет, я добавил в свой вопрос дополнительную информацию, чтобы уточнить, что я пытаюсь сделать. Спасибо за помощь! ???? - person Sergio0694; 07.12.2018