8

Иногда Visual Studio не позволяет устанавливать точки останова в представлениях MVC. Это случалось со мной много раз, но это не происходит для каждого взгляда, и я не знаю, почему.Visual Studio не разрешает точки останова в представлениях MVC

Когда вы нажимаете на левую панель, чтобы разместить точку останова, она помещает белый круг вместо обычного красного круга. Сообщение, когда вы наводите на него курсор, - «В настоящий момент точка останова не будет удалена. Исходный код отличается от исходной версии». Далее описывается, как разрешить ударам точки останова, но это создает странные результаты, и я не хочу этого.

Если ошибка верна, тогда я хочу запустить исходный код. Я не знаю, что происходит за кулисами в VS; Я пытаюсь восстановить и все такое, но это не помогает. Я бег в режиме отладки в VS 2012.

screenshot of trying to place a breakpoint in vs 2012 MVC razor view

+1

Вы работаете в выпуске и не настроили его на создание файлов pdb? Вы абсолютно можете, здесь есть что-то другое, что блокирует его. Есть много переменных, которые могут вызвать это, хотя. –

+0

Я работаю в отладке. Есть ли какая-либо другая соответствующая информация, которую я должен включить в мой вопрос? – levininja

+0

есть еще не все, что вы можете добавить. как я уже сказал, так много переменных может быть в игре. это может быть копирование dll из другого выходного каталога проектов, может быть, что он не генерирует pdb, может быть, что он указывает на другие файлы, чем то, что вы ожидаете, и т. д. –

ответ

9

Это может быть вызвано многими вещами, но несколько пунктов, чтобы проверить, какой я помог людям в последнее время:

  • Первый шаг: должен быть файл PDB вместе с DLL для включения отладки. (см.: What is a PDB file?) Убедитесь, что PDB находится в исполняемом каталоге.

  • Очистить, чтобы удалить все старые DLL из ваших папок с папками.

  • Убедитесь, что в вашем приложении выполняется сборка текущего кода (той же версии, что и в Visual Studio). Не предполагайте, что это просто потому, что вы нажали «построить» или «развернуть». Если изменений не было обнаружено, то часто этого не происходит. Проверьте время сборки сборки или измените что-нибудь и перестройте, чтобы увидеть изменение размера файла.

  • Если вы используете что-то связанное с веб-сайтом, убедитесь, что браузер не кэширует код, или IIS не проводит длительный процесс.

  • Убейте все запущенные экземпляры Visual Studio Development Server (вы можете сделать это из диспетчера задач или, более просто, из панели задач - они выглядят как логотип IE, и когда вы наводите на них курсор, они расскажут вам, какой порт они запускать на).

  • Перезапустите IIS с помощью iisreset из командной строки.

  • Проверьте настройки для отладки в Visual Studio (Tools > Options > Debugging > Symbols). Вы хотите автоматически загружать символы, и если вы связываете другие сборки, вам нужно ссылаться на их файлы PDB здесь.

+0

См. мой комментарий ниже re: web.config, чтобы внести изменения в свой список вещи, чтобы проверить –

0

Самое простое решение, которое я нашел, чтобы работать вокруг этой проблемы:

Установить точку останова в коде контроллера, который непосредственно перед View называется. Затем, когда эта точка останова поражена, выполните несколько шагов (используя F10). Он пройдет через _ViewStart.cshtml и, возможно, еще одну или две вещи. Но скоро это дойдет до взгляда.

Как только вы находитесь в режиме просмотра, то нажатие F5 (продолжение) приведет вас к точке останова в представлении.

-1

Убедитесь, что ваша конфигурация решения настроена на отладку не на выпуск.

Благодаря

0

Fom ответ ничего не работает для меня, чтобы установить точку останова в коде яваскрипта. я переехал яваскрипт кода в файл Scripts \ myscript.js и заменить блок скрипта

<script src="@Url.Content("~/Scripts/myscript.js")"></script> 
1

Так что я имел этот вопрос сегодня утром, и исправление для меня было связанно с синтаксисом бритвы.

Я устанавливал переменную внутри, если заявление

@If (my condition) 
{ 
    myVar1 = "blah blah blah" 
    @myVar2 = 1 <== This line here was causing my razor to crap out on render 
} 

Так что все другие вещи, хорошие вещи, однако, неправильное синтаксис бритвы может также вызвать точки останова проблемы. В этом случае это был символ @ на myVar2 внутри блока кода ... Просто FYI

+0

Хотя этот вопрос был для VS2012, я в настоящее время на VS2015 –

0

Чтобы добавить к @ kirk-widehurst ответ, (пожалуйста, исправьте, если это возможно), дважды проверьте свой web.config, в частности compilation флаг под system.web. Даже если вы создаете для отладки, если для атрибута debug установлено значение false, вы столкнетесь с проблемой отладки Razor.

<system.web> 
    <compilation debug="true" targetFramework="4.6" /> 
</system.web> 
Смежные вопросы