2016-09-05 5 views
0

Просто обновлен от VS-2012 до VS-2015. Все мои проекты (библиотеки CSharp) должны быть скомпилированы с уровнем предупреждения 4 (возможно наивысший уровень). Назад в VS-2012 в одном из моих проектов, у меня есть два предупреждения типаVisual Studio 2015 Предупреждения не активированы

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

В VS-2015 эти предупреждения не запускаются и не отображаются в представлении «Список ошибок».

Да, я мог бы разместить там фактические комментарии ToDo, которые будут всплывать, но я не беспокоюсь о местах, о которых я знаю, но местоположения, которые будут мертвыми, заканчиваются в будущих рефакторингах, которые затем никогда не будут замечены из-за того, что VS не выпустил предупреждение.

Насколько я могу видеть из документации MSDN выше и настраиваемых уровней предупреждения в VS, я не вижу никакой разницы в том, как мне придется настраивать VS или сами проекты.

Возможно ли, что базовый компилятор «Roslyn» (в настоящее время?) Не (пока?) Способен обнаружить эти предупреждения на основе его семантического анализа? Или я пропустил что-то еще?

Редактировать

Чтобы дать некоторую дополнительную информацию. Я использую решение для восстановления в 2012 и 2015 годах. Таким образом, отсутствие восстановления проекта не может быть причиной не опубликованных предупреждений.

Третье предупреждение типа

показывает вверх в обоих, VS-2012 и VS-2015

Редактировать 2

Вот небольшой пример кодирования (просто создайте новую библиотеку классов проекта ->). Один интересный вывод заключается в том, что когда я впервые создал проект, предупреждения были как в VS-2012, так и в VS-2015. Поэтому я просмотрел свой текущий случай, чтобы узнать, где различия, и оказалось, что маркировка класс как abstract дает результат VS-2015, не выдавая предупреждений больше. Когда класс не абстрактный, VS-2015 предупреждает, что VS-2012 сделал. Но на мой взгляд, случай, когда он абстрактный, не имеет значения, поскольку поля объявляются частными в любом случае.

// When the class is being marked as abstract, VS-2015 will not issue any warning. 
// When the class is not abstract the warnings are issued. 
public abstract class Demonstrator 
{ 
    // This should trigger warning CS0169 Warning Level 2 
    private int _UnusedField; 

    // This should trigger warning CS0414 Warning Level 4 
    private int _AssignedButNotReadField; 

    public Demonstrator() 
    { 
     _AssignedButNotReadField = 1; 
    } 
} 
+1

Просто, чтобы указать на очевидное, вы попробовали «Реконструкцию решения»? –

+0

@PhillipNgan: Да, я вызвал перезагрузку ;-) – Tobias

+0

Включена ли вкладка предупреждения? (выделено) – Mixxiphoid

ответ

0

Так получается, что такое поведение на самом деле можно считать ошибкой в ​​текущей версии Visual Studio 2015 Update 3. Я открыл вопрос о том, что в хранилище GitHub в Рослин. Для других, испытывающих ту же проблему, here вы можете отслеживать состояние этой проблемы.