从桌面应用程序调用 Windows 10 通用 Class 库

Calling a Windows 10 Universal Class Library from a desktop application

在之前的开发中,我使用了便携式 Class 库在 Windows 8.1 "Metro" 应用程序和 .NET/WPF 桌面应用程序之间共享代码。

Windows10 个通用 class 库是否也可用于此类桌面应用程序?如果不能,在这种情况下共享代码的推荐方式是什么?

首先我们来看一下你的问题的第一部分:

Are Windows 10 Universal class libraries also usable from such desktop apps?

为了回答这个问题,我在 VS2015 中使用以下项目创建了一个新解决方案:

  • WPF 桌面应用程序,名为 wpfApp
  • Win10 UWP 应用程序,名为 win10App
  • Win10 UWP class 库,名为 win10Lib

然后我能够添加 class 库作为对 UWP 应用程序的引用。但是,我在尝试将库引用添加到桌面应用程序时收到一条错误消息。

(屏幕截图:尝试将 UWP 库作为引用添加到桌面应用程序时出现错误消息)

接下来是你问题的第二部分:

and if not, what is the recommended way to share code in this scenario?

因此,我随后添加了一个新的 Class 库项目,但不是通用类型...我在 Classic 桌面应用程序下选择了便携式 Class 库选项。这让我可以选择我想要支持的平台,包括 .NET 4.6 和 Windows Universal 10.0。

(屏幕截图:添加便携式 Class 库)

所以,现在我的解决方案中有一个新的 class 库项目:

  • classic desktop class 库(便携式),命名为 portableLib

我开始再次向我的 WPF 桌面应用程序添加 class 库引用,选择我的新 portableLib 项目。但是,我收到以下错误消息:

(屏幕截图:向 WPF 项目添加可移植 class 库引用时出现错误消息)

发生这种情况是因为我在创建 class 库时选择了 4.6(.NET Framework 版本的默认值)作为平台之一,但我的 WPF 项目仍然针对旧版本的 .NET Framework .我通过编辑 WPF 应用程序的项目属性修复了这个问题,并更新了目标以匹配 class 库的框架版本。

最后,我在我的 Win10 UWP 应用程序中添加了对新的可移植 class 库的引用,并且添加成功。我现在可以构建没有错误的解决方案。

这是我的项目结构的截图,附有参考资料。

希望对您有所帮助!