【问题标题】:Referencing a .NET Standard 2.0 project with a .NET 4.7.2 project > System.IO.Ports not implemented使用 .NET 4.7.2 项目引用 .NET Standard 2.0 项目 > System.IO.Ports 未实现
【发布时间】:2020-09-30 00:35:12
【问题描述】:

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

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

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

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

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

帮助??有什么线索吗?

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

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

【问题讨论】:

  • 最简单的解决方案是将 winforms 项目升级到 .Net 4.8。
  • 根据你的建议,我的目标是 4.8。重新启动以进行良好的测量。同样的例外。需要明确的是,项目 B 现在是 4.8,并且正在以 .NET Standard 2.0 为目标的项目 A 中调用“GetListOfSerialPorts()”。
  • 我发现了这个:github.com/dotnet/runtime/issues/31045 - 你有机会使用 Standard 2.1 吗?似乎他们已经在那个版本中修复了它。
  • 现在大声笑出来...我确实看到了那个帖子,但我没有看到它的相关性。根据您的建议,我尝试针对 2.1。我现在收到一个编译错误:“xxxx.csproj 以 netstandard2.1 为目标。它不能被以 .NetFramework,Versionc4.7.2 为目标的项目引用”。

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


【解决方案1】:

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

【讨论】:

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