Подтвердить что ты не робот

Отключение предупреждения о компиляторе в коде VS

Я хочу знать, как подавить конкретное предупреждение компилятора в VS Code для всего проекта.
Я видел этот запрос: Можно ли отключить специальные предупреждения компилятора?, но это для Visual Studio, а не кода Visual Studio.

Вот ответы, которые рекомендованы в указанном выше вопросе:
1. Solution Explorer > View > Properties > Build > Suppress Warnings
и
2. #pragma warning disable warning-list

Для # 1: я не могу найти Обозреватель решений в любом месте VS-кода.

Для # 2 Это работает, только если я включаю его в начало каждого из скриптов. Мне нужен способ сделать это для всего проекта.

Обновление:

Я попытался использовать <noWarn>01699,8019</noWarn > в моих файлах .csproj, но не пошел.

После просмотра последних изменений я заметил, что он вернулся к <noWarn>0169</noWarn>. Затем я понял, что мне нужно было < noWarn>0169;8019</noWarn>. Переключение , для a ; Решение проблемы.

Ну, оказывается, что вышеупомянутое решение не сработало. Как только я перезапустил VS Code, все предупреждения вернулись. Возможно, код ошибки мне не нужен 8019, хотя он работал как код ошибки внутри оператора #pragma. Коды, используемые в пределах <noWarn>, отличаются от кодов, используемых в конце инструкции #pragma?

Для тех, кто говорит, тоже переключается на VS Community, это не так. Я использую VS Code AS текстовый редактор с Unity Editor. Я ищу, какой файл мне нужно изменить, и какие изменения нужно сделать, чтобы применить инструкцию типа #pragma warning disable 8019 к проекту целиком.

4b9b3361

Ответ 1

Я смог заставить это работать. Мое решение выглядит примерно так:

<PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <RuntimeFrameworkVersion>2.1.1</RuntimeFrameworkVersion>
    <NoWarn>0169;8019</NoWarn>
</PropertyGroup>

<NoWarn> - это PascalCase, а не camelCase, и элемент вложен в <PropertyGroup>.

Ответ 2

Благодаря некоторому коду, опубликованному пользователем rakkarage на форумах Unity, я наконец-то смог это исправить, создав следующий скрипт-редактор в моем проекте Unity:

using System.IO;
using System.Text.RegularExpressions;
using UnityEngine;
using UnityEditor;

[InitializeOnLoad]
class FixCSProjs : AssetPostprocessor
{
    private static void OnGeneratedCSProjectFiles() {
        Debug.Log("Fixing csproj files...");
        var dir = Directory.GetCurrentDirectory();
        var files = Directory.GetFiles(dir, "*.csproj");

        foreach (var file in files) {
            FixProject(file);
        }
    }

    static bool FixProject(string file) {
        var text = File.ReadAllText(file);
        var find = "<NoWarn>([0-9;]+)<\\/NoWarn>";
        var replace = "<NoWarn>$1;3003;3009</NoWarn>";

        if (Regex.IsMatch(text, find)) {
            text = Regex.Replace(text, find, replace);
            File.WriteAllText(file, text);
            return true;

        } else {
            return false;
        }
    }
}

Это добавит дополнительные коды предупреждений в атрибут NoWarn каждого файла csproj каждый раз, когда они автоматически генерируются Unity.

В моем случае я отключаю предупреждения 3003 и 3009 (предупреждения о соответствии CLS), но просто заменяю 3003;3009 в моем коде любыми кодами предупреждений, разделенными точкой с запятой, которые вы хотите, и это должно сработать.

Я также хотел бы сказать, что это отвратительное решение, и я действительно хотел бы, чтобы был лучший, более чистый способ сделать это.