问题描述
项目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项目中需要它。