Как обработать исключение - System.PlatformNotSupportedException: "System.IO.Ports is currently only supported on Windows."?

Рейтинг: 0Ответов: 1Опубликовано: 26.04.2023

Хочу в консольном приложении подключиться к ПЛК через переходник RS485/USB. Не доходя до прочего кода (параметры подключения, чтение и запись данных ПЛК), получаю указанное выше исключение:

using System.IO.Ports;

List<string> allports = SerialPort.GetPortNames().ToList(); // здесь выходит исключение
string port = allports.Last();
SerialPort serial = new SerialPort(port); // если убрать предыдущие две строчки, заменив port на "COM4", то тогда здесь выйдет исключение

Основной вопрос: как правильно обработать это исключение (отключать не хочется) ? Изменял параметры проекта с дефолтных на: Целевая платформа - Windows; Целевая версия ОС - 7; Целевая платформа - х64. Не помогло, вернул на прежние (нет целевой платформы и Any CPU), чтобы потом под Linux опробовать работу приложения.

Дополнительный вопрос: на Windows строка string port = allports.Last(); выдаёт мне через C#Interactive (тут это исключение не выходит и код работает) результат "COM4". Такое наименование, как я понимаю, свойственно только для Windows. Будет ли указанный код работать на Linux, чтобы сделать мне new SerialPort(port); с результатом вроде "/dev/ttyUSB0" ?

Ответы

▲ 0Принят

По основному вопросу: ПКМ по имени проекта в Обозревателе решений -> Управление пакетами NuGet -> в строке поиска пишем System.IO.Ports -> Установить

Как было сделано до этого (и выкидывало исключение): была добавлена "Зависимость" (также в Обозревателе решений ПКМ по "Зависимости" -> Добавить ссылку на проект) в виде скачанной библиотеки System.IO.Ports.dll

По дополнительному вопросу - ещё не проверял.