Окно 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"), я получаю следующую ошибку:
Имя "Математика" не существует в текущем контексте.
То, что я хочу знать, это:
- Это ожидаемое поведение по умолчанию для Visual Studio 2010? Я мог поклясться, что это никогда не было проблемой, но, может быть, это всегда работало таким образом, и я почему-то никогда не замечал.
- Если это не нормально, чтобы получить эту ошибку, какие-либо мысли о том, что проблема может быть? В Visual Studio есть миллион настроек, и я не знаю, с чего начать.
Я должен отметить, что этот вопрос примерно похож на этот, но у меня нет никаких проблем, связанных с моими локальными переменными, и я не использую PostSharp.
редактировать
Я только что попытался сбросить все мои настройки Visual Studio обратно по умолчанию, и я все еще получаю ту же ошибку. Если кто-то хочет попробовать простой тест в Visual Studio, я просто хочу знать, если вы получаете ошибку, если вы добавляете часы для Math.Sin(1)
,
Редактировать 2
Вот пара снимков экрана, чтобы показать, что я испытываю:
Редактировать 3
Интересно, что intellisense работает, если я наберу Math.
в окно просмотра, но если я завершу выражение, я все еще получаю ошибку:
Редактировать 4
Чтобы ответить на вопросы Бэкона:
- Я получаю такое же поведение с QuickWatch и Immediate.
- Закрытие и повторное открытие всех окон не решает проблему.
- Я использую Visual Studio 2010 Professional (версия 10.0.40219.1 SP1Rel)
- Я пытался настроить таргетинг на.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:
Я сделал это в небольшом тестовом приложении, в конструкторе..
Попытка поставить часы на математике позволяет мне увидеть значения E и PI. Вы не можете положить его на грех. Положить один на вал работает просто отлично.
Так что нет, я не думаю, что это вполне нормально, если вы не нажали не то имя. Т.е. не переменная, а порция "грех"...
Вот где я выделил все это...