首页 > 解决方案 > 使用 .NET 4.7.2 项目引用 .NET Standard 2.0 项目 > System.IO.Ports 未实现

问题描述

项目 A是一个 Windows 控制台应用程序,它使用.NET Standard 2.0(为了兼容性)并具有以下代码行

    public List<string> GetListOfSerialPorts()
    {
        return System.IO.Ports.SerialPort.GetPortNames().Distinct().ToList();
    }

本地单元测试成功运行此代码。 这意味着当从本地单元测试调用时,它可以工作。

我现在有一个项目 B(在同一个解决方案中),它是一个基于.NET 4.7.2 的 Windows GUI。 . 这个项目不需要那么大的兼容性。这个项目“使用”(引用)项目 A。同样的函数被调用,但来自项目 B,当调用完全相同的代码行时,我看到一个异常:

System.IO.Ports 目前仅在 Windows 上受支持。”)。

帮助??有什么线索吗?

附带说明一下,如果我尝试在项目 B 中实现“SerialPort.GetPortNames()”,Visual Studio 会抱怨它无法引用 System.IO.Ports 程序集,但是当我将其添加为项目的引用时,它会抱怨现在有两个(不明确的)对 System.IO.Ports 的引用(它显然已经在“系统”中)。请注意,这不是我的主要问题。我的主要问题是我在项目 A 中的原始代码行现在在从项目 B 调用时失败。

请注意,我们安装了 Microsoft.Windows.Compatibility 3.1.1。

标签: c#.net.net-standard-2.0.net-4.7.2

解决方案


我通过在项目 B 上安装 Microsoft Windows 兼容性依赖项解决了我的问题,并且它有效。我的印象是它只需要在 .NET Core 项目中。


推荐阅读