Ссылка на проект .NET Standard 2.0 с проектом .NET 4.7.2 ›System.IO.Ports не реализован

Project A - это консольное приложение Windows, использующее .NET Standard 2.0 (для совместимости) и имеющее следующую строку кода

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

Локальные модульные тесты успешно запускают этот код. Это означает, что при вызове из локального модульного теста он работает.

Теперь у меня есть Project B (в том же решении), который представляет собой графический интерфейс Windows, основанный на .NET 4.7.2.. Этот проект не нуждается в большой совместимости. В этом проекте используется (ссылается) на проект A. Вызывается та же функция, но из проекта B, и когда вызывается та же самая строка кода, я вижу исключение:

System.IO.Ports в настоящее время поддерживается только в Windows.).

Помощь?? Какие-нибудь подсказки?

В качестве побочного примечания: если я попытаюсь реализовать SerialPort.GetPortNames () в проекте B, Visual Studio жалуется, что не может ссылаться на сборку System.IO.Ports, но когда я добавляю ее в качестве ссылки на проект, он жалуется, что теперь есть две (неоднозначные) ссылки на System.IO.Ports (очевидно, он уже находится в System). Учтите, что это не моя главная проблема. Моя основная проблема заключается в том, что моя исходная строка кода в проекте A теперь не работает при вызове из проекта B.

Обратите внимание, что у нас установлена ​​Microsoft.Windows.Compatibility 3.1.1.


person Ed Landau    schedule 30.09.2020    source источник
comment
Самым простым решением будет обновление проекта winforms до .Net 4.8.   -  person Joel Coehoorn    schedule 30.09.2020
comment
По вашему предложению я поставил таргетинг на 4.8. Перезагрузился на всякий случай. То же исключение. Чтобы было ясно, Project B теперь 4.8 и вызывает GetListOfSerialPorts () в проекте A, который нацелен на .NET Standard 2.0.   -  person Ed Landau    schedule 30.09.2020
comment
Я нашел это: github.com/dotnet/runtime/issues/31045 - У вас есть шанс использовать Standard 2.1? Кажется, в этой версии исправили.   -  person Kiksen    schedule 30.09.2020
comment
Смеюсь вслух ... Я действительно видел этот пост, но не видел его актуальности. По вашему предложению я попробовал настроить таргетинг на 2.1. Теперь я получаю сообщение об ошибке компиляции: xxxx.csproj нацелен на netstandard2.1. На него нельзя ссылаться в проекте, ориентированном на .NetFramework, Versionc4.7.2.   -  person Ed Landau    schedule 30.09.2020


Ответы (1)


Я решил свою проблему, установив зависимость совместимости с Microsoft Windows в Project B, и она сработала. У меня создалось впечатление, что он нужен только для проекта .NET Core.

person Ed Landau    schedule 20.10.2020