Окно Visual Studio Watch без учета использования - PullRequest
8 голосов
/ 29 февраля 2012

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

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) в окне «Просмотр» (выбрав код, щелкнув правой кнопкой мыши и выбрав «Добавить просмотр»), я получаю следующую ошибку:

Имя «Math» не существуетв текущем контексте

Что я хочу знать:

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

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

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

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

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

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

Adding Math.Sin(1) to watch

Showing error for Watch

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

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

Showing intellisense working

Изменить 4

Чтобы ответить на вопросы BACON:

  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 ]

6 голосов
/ 29 февраля 2012

Похоже, что виновником является сторонняя библиотека, которая выполняет 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

1 голос
/ 29 февраля 2012

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

enter image description here

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

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

Здесь я выделил всю вещь ...

enter image description here

...