Почему Решарпер говорит "Несоответствие аргументов", если я не предоставляю явно необязательный параметр?

Мой проект использует.Net 4.0 Client.

Следующий фрагмент кода

#if DEBUG
    string key = "pldi6z3n3vfz23czhano";
#else
    string key = "bh7aaqmlmd0bhd48g3ye";
#endif
    using (new Analytics(key, userInfo))...

компилируется и работает нормально как в конфигурации Debug, так и в Release. Однако, если конфигурация отладки активна в Visual Studio, Resharper подчеркивает параметры, которые я передаю конструктору Analytics, и говорит "Несоответствие аргументов". Он не предлагает никаких вариантов решения проблемы, и, поскольку он считает, что это ошибка, а не предупреждение, он не предлагает ее устранить. Если я добавлю третий аргумент, правда, тогда он будет полностью счастлив. Третий аргумент конструктора имеет значение по умолчанию true, поэтому нет необходимости передавать его явно. Конечно, это не проблема для меня, но я озадачен поведением Решарпера.

Если это имеет значение, класс Analytics относится к DesktopAnalytics версии 1.0.1, созданной Джоном Хэттоном (загружается с использованием NuGet).

Версия Resharper 7.1.3 Full Edition.

2 ответа

Это правильно работает для меня, используя Resharper 8.0 - у меня есть воспоминание о том, что R# не справлялся с директивами препроцессора в более ранних версиях - таким образом, это, вероятно, уже исправлено. Это может быть исправлено в вашей версии, перемещая key объявление вне директив вашего препроцессора (это дикая догадка)

введите описание изображения здесь

Была такая же проблема. Я попытался очистить кеши как из пользовательского интерфейса, так и из удаления папок. Перезагрузка перезагрузил решение (много раз) другие подобные проекты были в порядке.

У меня нет терминологии, но есть две области настроек свойств. Один появляется как большой диалог. С вкладками Application, Build, Build Events, Debug и т. Д. Другой появляется, когда я просто щелкаю левой кнопкой мыши по файлу проекта в обозревателе решений. Он имеет 6 вариантов имени-значения. Первым был "Уровень языка C#", и он был каким-то образом установлен на C# 3.0 (который не поддерживал необязательные аргументы). Установка его на C# 4.0 устранила все проблемы. Обратите внимание, что я собирал x86 для.Net Framework 4.0. Я управлял соответствующим NUnit.

В любом случае, это изменение решило проблему для меня. Я не знаю, как это случилось.

Другие вопросы по тегам