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.