用.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上受支持。”)。

帮助??有任何线索吗?

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

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

解决方法

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...