【发布时间】:2017-10-08 02:50:54
【问题描述】:
我想在 UWP(侧载应用)中使用 .NET Framework 程序集。我知道这是不可能的,因为 UWP 的目标是 .NET Core。
我正在尝试创建代理 Windows 运行时组件,如 this article 中所述。
但是我有问题:
- 我无法使用市场上的任何模板,因为它们适用于 Visual Studio 2015,而我使用的是 Visual Studio 2017
- 我无法打开示例项目,因为 Visual Studio 2017 表示这些项目(具有已编辑 csproj 文件的项目)与该版本的 Visual Studio 2017 不兼容
- 该文章中的构建后脚本使用
winmdidl,但它不在我的PATH中,所以我必须输入完整路径"C:\Program Files (x86)\Windows Kits\10\bin\x86\winmdidl"(不知道这是否有问题) -
winmdidl命令返回错误error W1005: Exception Unknown exception
另外我还有两个问题:
- 示例和文章使用了 C++“代理”项目,我可以在代理组件中只用 C# 编写逻辑而不使用任何 C++ 代码吗? (我只需要能够从 UWP 调用一些在第 3 方 .NET 程序集中定义的方法)
- 既然在 .NET Framework 中调用某些代码的“代理 Windows 运行时组件”方法看起来很麻烦,也许最好编写一些 Windows 服务或其他形式的 REST 服务并通过
localhost与它通信?这是我已经用来与机器上的一些 3rd 方工具进行通信的一种方式。性能和复杂性是否有利于代理组件方法?
【问题讨论】:
-
我还没有尝试过,但这可以工作。创建 WPF 应用程序并使用 Desktop Bridge 将应用程序转换为 appx 包。它将在您同时拥有 .net 项目 (wpf) 和 uwp 项目的地方创建解决方案。您应该最终得到类似的解决方案,例如使用代理 Windows 运行时组件时。
-
但是这种方法可以用来引用现有 UWP 项目中的 .NET 代码吗?将试一试并更新我的问题,感谢您的提示。
-
看起来将现有的 C# UWP 应用程序转换为“桥接应用程序”也并不容易,并且会涉及对应用程序的许多更改。所以我想本地 REST 服务仍然是进行这种通信的最简单、最可靠的方式。
标签: c# .net uwp win-universal-app windows-10-universal