.NET Core 3.0: предупреждение CS8632 Аннотации для ссылочных типов, допускающих значение NULL, должны использоваться только в коде в контексте аннотаций '#nullable'

Я получаю это предупреждение, когда пытаюсь использовать ссылочный тип, допускающий значение NULL, например:

using System;

namespace DotNetCoreExperiment
{
    static class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            string? fred = null; // warning occurs here
            Console.WriteLine(fred);
        }
    }
}

Почему я получаю это предупреждение и как его исправить? Я включил <NullableReferenceTypes>true</NullableReferenceTypes> в моем файле csproj. Я не хочу делать #nullable enable для каждого файла кода!


person ekolis    schedule 24.09.2019    source источник
comment
У вас есть атрибут LangVersion?   -  person Twenty    schedule 24.09.2019
comment
Вместо этого используйте <Nullable>enable</Nullable>. NullableReferenceTypes был удален очень давно. Вы использовали для справки старую запись в блоге вместо обновленных документов возможно?   -  person Panagiotis Kanavos    schedule 24.09.2019
comment
@PanagiotisKanavos ага, вот и все! Спасибо! Если бы вы могли опубликовать это как ответ, это было бы здорово. Теперь мне интересно, почему этот параметр недоступен на странице свойств проекта ...   -  person ekolis    schedule 24.09.2019
comment
Потому что это нетривиальное изменение для существующего кода. Как только вы включите его, вы начнете получать предупреждения или ошибки от всех файлов в решении. В многопроектном решении люди должны перестать делать что-либо еще и начать исправлять ошибки. Комбинируя #nullable и настройку проекта, люди могут обновлять один файл за раз и по-прежнему иметь возможность развертывать   -  person Panagiotis Kanavos    schedule 24.09.2019
comment
Я знаю, что это довольно давно, но похоже, что это имеет отношение к моей проблеме. Я использую .net5.0 и в моем csproj есть ‹Nullable› enable ‹/Nullable›, при локальном запуске я не вижу никаких проблем, но в конвейере azure DevOps я получаю это предупреждение Предупреждение CS8632. Есть идеи, почему это может быть так?   -  person leaner12    schedule 13.05.2021