Console.BufferHeight в netcoreapp2.1 вызывает исключение PlatformNotSupportedException в Ubuntu - PullRequest
0 голосов
/ 10 мая 2019

У меня есть консольное приложение, встроенное в dotnetcorapp2.1. На Windows работает нормально.

При попытке запустить в Ubuntu выдается сообщение об ошибке исключения:

System.PlatformNotSupportedException: операция не поддерживается на этой платформе. в System.ConsolePal.set_BufferHeight (значение Int32)

Это потому, что эта строка:

     Console.BufferHeight = Int16.MaxValue - 1;

В этом документе не упоминалось ограничение, которое я принимаю во внимание для Console.BufferHeight

Гугление не помогло, как это и это

Какое ограничение Console.BufferHeight (и BufferWidth) в Ubuntu?

1 Ответ

0 голосов
/ 11 мая 2019

Я отправил этот вопрос corefx team и отправил туда проблему .

Все отзывы в этом ответе идут на @ danmosemsft

Элемент Console.BufferHeight не поддерживается в Unix.В документах не указано специфическое поведение Unix для методов / свойств консоли.

Класс ConsolePal в документе ConsolePal.Unix.cs включает также другие члены NotSupported.

Создается новый документ для отображения исключений PlatformNotSupportedException в System.Console

Я изменил код и перехватил PlatformNotSupportedException отдельно, и приложение работает в Ubuntu без проблем.

      try
      {
         //.... do your stuff here
      }
      catch (PlatformNotSupportedException )
      {
        //log PlatformNotSupportedException 
        //noop
      }
      catch (exception ex)
      {

         //handle exception
      }

Редактировать

Обнаружение кода, вызывающего PlatformNotSupportedException:

  • Установить пакет nugetMicrosoft.DotNet.Analyzers.Compatibility

    Install-Package Microsoft.DotNet.Analyzers.Compatibility -Version 0.2.12-alpha
    
  • Настройте инструмент, как описано здесь

  • Выберите правило PC001 и выберите Set RuleУстановите уровень серьезности как ошибку

  • При сборке проекта все проблемы, связанные с PlatformNotSupportedExceptions, отображаются как ошибки в окне ошибок
...