通过 Visual Studio 进行桌面桥接的桌面应用程序能否调用 UWP API?

Can desktop app desktop-bridged via Visual Studio call UWP APIs?

我对调用 Calling UWP APIs from a desktop app 有点困惑。此link第一段的最后一句指出:

a WPF, Windows Forms, or Win32 app cannot call UWP API unless the app is packaged in an MSIX package.

使用 VS2019 我有 desktop-bridged 我的 WPF 应用程序(在 VS2019 中开发)。此过程创建了一个文件夹(在 ...\AppPackages 文件夹下),其内容如下所示。双击此文件夹中的 .appxbundle,我可以成功地将应用程序旁加载到我的 Windows 10 上(它还让我可以选择上传到 upload/publish 到 Microsoft Store):

问题:满足其他需求后,此应用现在可以调用UWP APIs吗?如上所述 link,应用程序需要打包在 MSIX 包中。我在下图中没有看到任何 MSIX 文件:

您可以从桌面桥应用调用 UWP API,无论它是打包为 APPX 还是 MSIX。

Therefore, if an API requires a package identity, a WPF, Windows Forms, or Win32 app cannot call it unless the app is packaged in an MSIX package.

我猜 打包在 MSIX 包中 他们的意思是 打包在 MSIX 或 APPX 包中 。他们只是没有提到 APPX,因为 MSIX 是新格式。

但是,请注意一些 UWP API,主要是 UI 相关 API,只能从真正的 UWP 应用中调用,而不能从打包的 Win32 或 Wpf 应用中调用。

是的。 APPX 和 MSIX 包之间没有重要区别,或者您是使用桌面桥、Windows Application Packaging project 还是手动使用 MakeAppx.exe.

打包您的应用程序

如果目标版本设置为 1809/October 2018 Update/Build 17763,则包文件扩展名为 .msix(如果您正在创建 bundle,则为 .msixbundle) /RS5 或更高版本。否则就是 .appx

APPX 和 MSIX 包都已安装,使用方式完全相同。