Как исправить предупреждение C# CA1416 в vscode?
Я только начинаю изучать C #, следуя Brackeys на Youtube . После написания я получаю эту проблему в vscode:
{
"resource": "/d:/OneDrive/Programming/Youtube/brackeys/How To Program In C#/Basics/Program.cs",
"owner": "msCompile",
"code": "CA1416",
"severity": 4,
"message": "This call site is reachable on all platforms. 'Console.WindowHeight.set' is only supported on: 'windows'. [D:\\OneDrive\\Programming\\Youtube\\brackeys\\How To Program In C#\\Basics\\Basics.csproj]",
"startLineNumber": 11,
"startColumn": 13,
"endLineNumber": 11,
"endColumn": 13
}
Я нашел эту статью Microsoft, в которой говорится об этом предупреждении, но я не понимаю решения, если оно действительно так: (...
У меня есть простая программа, я просто узнаю о классе консоли, меняющем высоту терминала, цвет шрифта и т. Д .:
using System;
namespace Basics
{
class Program
{
static void Main(string[] args)
{
Console.Title = "Skynet";
Console.ForegroundColor = ConsoleColor.Green;
Console.WindowHeight = 40;
Console.WriteLine();
Console.ReadKey();
}
}
}
У кого-нибудь есть идеи, как решить эту проблему?
3 ответа
Итак, ошибка связана с этой строкой:
Console.WindowHeight = 40;
Вы пытаетесь установить высоту окна, это метод, украшенный
[SupportedOSPlatform("windows")]
атрибут.
Чтобы указать приложению выполнять эту строку только в Windows, оберните метод.
if (OperatingSystem.IsWindows())
{
Console.WindowHeight = 40;
}
Компилятор распознает это и перестанет выдавать замечание.
Если вы знаете, что разрабатываете только для Windows, вы можете пометить свой код как таковой:
using System.Runtime.Versioning;
[SupportedOSPlatform("windows")]
class Program
{
...
}
Преимущество этого подхода заключается в том, что вы избегаете добавления в код операторов IF для проверки версии ОС.
Вы также можете пометить определенные методы таким образом, если не хотите, чтобы они применялись ко всему классу.
Также см. этот ответ .
Укажите следующие строки в файле проекта:
<PropertyGroup>
<TargetFramework>net7.0-windows</TargetFramework>
</PropertyGroup>