【问题标题】:Reference a UWP project from a .NET core project从 .NET 核心项目引用 UWP 项目
【发布时间】:2019-04-07 16:20:14
【问题描述】:

我在通用 Windows 类库中有一些代码,我想从 .NET 核心项目中使用。

我有一个运行 Windows IOT 的 pi,为此我安装了 adafruits PWM hat。我找到了一个包含所需 C# 代码的 UWP project,效果很好。

但是在 pi 我也想要一个使用 UWP 项目的 asp.net 核心项目。但是,如果我将我的 asp.net 核心的引用添加到 UWP,它会告诉它不受支持,这也是有道理的,因为它们在 .net 架构中处于同一级别。

我使用 Visual Studio 2019 并且刚刚安装了 .NET Core 3.0 preview3。

我可以通过什么方式从我的核心项目中使用 UWP?

【问题讨论】:

  • 您只能剪切和粘贴。 blog.lextudio.com/…
  • 我不熟悉 UWP,但是你的类库中的代码,它与 UWP 的东西有关吗?您可以将类库移植到 .NET Standard 吗?然后你可以在所有项目中引用它。
  • 不幸的是它使用 UWP 的东西,比如:Windows.Devices.I2c 所以不容易移植
  • @JerryA:你应该如何在 ASP.NET Core 应用程序中使用 UWP 特定的东西?在不同平台之间共享有意义的代码应该以 .NET Standard 为目标。
  • @mm8 - 是的,你是对的。正如你在下面看到的,这也是我最终得到的结果。

标签: c# asp.net-core uwp raspberry-pi3 iot


【解决方案1】:

如果你想参考,不能按照你自己说的那样做,没有意义。

一些解决方法是将代码从 UWP 项目移动到新的 .Net Core 项目,然后从两个项目中引用它。如果您使用某些 UWP API,您可能会考虑使用带条件编译的共享项目,而不是新的 .Net Core 项目。

【讨论】:

  • 它使用一些 UWP API,所以我同意核心或标准中的共享项目可以解决问题。但我不是这个的超级粉丝,因为它使跨层的通信有点模糊,但你可能是对的,这是最好/唯一的可能性。
  • 我实际上结束了这个。所以在 .Net 标准中创建了一个单例,我在我的 ASP:NET 项目和我的 UWP 项目中都引用了它。所以我的 web 服务可以调用共享库中的一些方法,这些方法可以通知 UWP 部分。
【解决方案2】:

尝试添加

    <ItemGroup>
        <PackageReference Include="System.Runtime.WindowsRuntime" Version="4.6.0-preview4.19212.13" />
        <Reference Include="Windows">
            <HintPath>C:\Program Files (x86)\Windows Kits\10\UnionMetadata\10.0.18362.0\Windows.winmd</HintPath>
        </Reference>
    </ItemGroup>

到您的 csproj 文件。它允许我在 asp.net core preview 3 项目中使用 UWP api。

【讨论】:

    猜你喜欢
    • 2022-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-06
    • 2019-06-26
    • 1970-01-01
    • 2017-08-05
    相关资源
    最近更新 更多