【问题标题】:UWP - Use assembly targeting .NET Framework 4.6UWP - 使用面向 .NET Framework 4.6 的程序集
【发布时间】: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


【解决方案1】:

使用桌面桥功能,您不再需要 Windows 运行时代理组件。有关更多信息,请参阅此页面:

https://developer.microsoft.com/en-us/windows/bridges/desktop

我猜这个 sample 使用 AppService 将帮助您解决您的场景

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-20
    • 1970-01-01
    相关资源
    最近更新 更多