Окно Visual Studio Watch без учета использования

У меня есть следующий код в модели представления:

public Point Location
{
    get
    {
        var rangePixels = Range * PixelsPerMile;
        var xCoordinate = OwnLocation.X * MapScale + rangePixels * Math.Cos(Theta);
        var yCoordinate = OwnLocation.Y * MapScale - rangePixels * Math.Sin(Theta);
        return new Point(xCoordinate, yCoordinate);
    }
}

Одно из употреблений в верхней части файла кода System, который содержит Math,

Если я смотрю Math.Sin(Theta) в окне Watch (выбрав код, щелкнув правой кнопкой мыши и выбрав "Add Watch"), я получаю следующую ошибку:

Имя "Математика" не существует в текущем контексте.

То, что я хочу знать, это:

  1. Это ожидаемое поведение по умолчанию для Visual Studio 2010? Я мог поклясться, что это никогда не было проблемой, но, может быть, это всегда работало таким образом, и я почему-то никогда не замечал.
  2. Если это не нормально, чтобы получить эту ошибку, какие-либо мысли о том, что проблема может быть? В Visual Studio есть миллион настроек, и я не знаю, с чего начать.

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

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

Я только что попытался сбросить все мои настройки Visual Studio обратно по умолчанию, и я все еще получаю ту же ошибку. Если кто-то хочет попробовать простой тест в Visual Studio, я просто хочу знать, если вы получаете ошибку, если вы добавляете часы для Math.Sin(1),

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

Вот пара снимков экрана, чтобы показать, что я испытываю:

Добавление Math.Sin (1) для просмотра

Отображение ошибки для часов

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

Интересно, что intellisense работает, если я наберу Math. в окно просмотра, но если я завершу выражение, я все еще получаю ошибку:

Показывать интеллигентность работы

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

Чтобы ответить на вопросы Бэкона:

  1. Я получаю такое же поведение с QuickWatch и Immediate.
  2. Закрытие и повторное открытие всех окон не решает проблему.
  3. Я использую Visual Studio 2010 Professional (версия 10.0.40219.1 SP1Rel)
  4. Я пытался настроить таргетинг на.NET 4.0 Client Profile и полный.NET 4.0. Не сделал разницы Я создал консольное приложение (а не приложение WPF) для клиентского профиля.NET 4.0, и, наконец, ошибка не возникла. Таким образом, WPF может быть проблемой (или WPF с некоторыми сторонними библиотеками). (Проверим это дальше.)

2 ответа

Решение

Похоже, что виновником является сторонняя библиотека, которая выполняет IL-ткачество (Fody.PropertyChanged).

Если я создаю новый проект WPF без этой библиотеки, я могу использовать Math.Sin() в окне просмотра. Как только я установлю PropertyChangedЯ получаю сообщение об ошибке "недоступно в этом контексте".

Спасибо @BACON за то, что он помог мне понять правильный путь.

Вот ссылка на проблему, которую я разместил на сайте PropertyChanged:

http://code.google.com/p/propertychanged/issues/detail?id=6&thanks=6&ts=1330494634

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

И впоследствии оказывается, что это, вероятно, ошибка в Mono-Cecil, которую использует PropertyChanged:

https://github.com/jbevain/cecil/issues/90

Я сделал это в небольшом тестовом приложении, в конструкторе..

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

Попытка поставить часы на математике позволяет мне увидеть значения E и PI. Вы не можете положить его на грех. Положить один на вал работает просто отлично.

Так что нет, я не думаю, что это вполне нормально, если вы не нажали не то имя. Т.е. не переменная, а порция "грех"...

Вот где я выделил все это...

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

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