При работе с предупреждением кода единства CS0649
и CS0414
срабатывают, когда единица перестраивает решение, даже когда применяется атрибут единства [SerializeField]
.Я хочу подавить эти ложные срабатывания в источнике через контекстное меню в списке ошибок или меню быстрых действий.Я не хочу глобально отключать CS0649
и / или CS0414
, потому что в случае, если [SerializeField]
было забыто или не подходит, предупреждение, очевидно, полезно.
Я отредактировал csc.rsp
файл и добавил /w40649
для повторного включения предупреждения в Visual Studio, однако, когда я щелкаю правой кнопкой мыши по ошибке, опция «подавить ошибку в источнике» отсутствует.Я могу вручную устранить ошибку с помощью #pragma warning disable CS0649, CS0414
и повторно включить с помощью #pragma warning restore CS0649, CS0414
Однако это очень утомительно для изменения вручную.
Я уже пробовал пункт меню «Подавить предупреждение» в Visual Studio2010 недоступен однако, похоже, это не добавило обратно элемент контекстного меню, хотя, похоже, он указан в настройке инструментов в контекстном меню> «Другие контекстные меню | Список ошибок», как и ожидалось, как ни странно.
Без подавления:
[SerializeField]
private bool flashCustomColor = false;
[SerializeField, OneLine.OneLine, ShowIf("flashCustomColor")]
private FlashingColors flashingColors;
[System.Serializable]
private struct FlashingColors
{
public Color GetHurtColor() => hurtColor ?? Color.red;
[SerializeField]
private Color? hurtColor;
public Color GetNormalColor() => normalColor ?? Color.white;
[SerializeField]
private Color? normalColor;
}
С подавлением:
[SerializeField]
#pragma warning restore IDE0044, CS0414
private bool flashCustomColor = false;
#pragma warning restore IDE0044, CS0414
[SerializeField, OneLine.OneLine, ShowIf("flashCustomColor")]
private FlashingColors flashingColors;
[System.Serializable]
private struct FlashingColors
{
public Color GetHurtColor() => hurtColor ?? Color.red;
[SerializeField]
#pragma warning disable CS0649, IDE0044
private Color? hurtColor;
#pragma warning restore CS0649, IDE0044
public Color GetNormalColor() => normalColor ?? Color.white;
[SerializeField]
#pragma warning disable CS0649, IDE0044
private Color? normalColor;
#pragma warning restore CS0649, IDE0044
}
Я пытаюсь включить этот пункт контекстного меню, но, похоже, он не сразу доступен для предупрежденияCS0649.Это то, что в настоящее время отображается: Но на других ошибках я могу подавить это, как показано ниже: РЕДАКТИРОВАТЬ: я знаю, что я могу установитьполе до = null;
в классах, но структуры не могут принимать инициализаторы по умолчанию.Я обновил изображения, чтобы отразить это.