Проект Visual Studio 2015 больше не работает в режиме отладки


95

Вот что я получаю, даже когда запускаю в конфигурации отладки:

Я получил это, чтобы показать, включив «Только мой код» и предупредив, если при запуске нет кода пользователя. Это то, что недавно случилось с нашим проектом, и я не уверен, что мы сделали, чтобы это вызвать. Но я не смог это исправить. Точки останова не срабатывают, и быстрое наблюдение дает странные результаты.

Я попытался найти эту проблему в Google, но ни одно из стандартных решений «точки останова не сработает» не помогло. У меня нет идей.

Я проверил диспетчер конфигурации, и каждый проект также настроен на отладку.

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

Я отключил «Включить оптимизацию», и у меня больше не появляется диалоговое окно «Вы отлаживаете сборку выпуска». Он снова запускается и останавливается на точках останова! Однако окно вывода отображает это при запуске:

Символы для модуля Navigo.exe не загружены.

  1. Используйте конфигурацию сборки отладки или отключите параметр отладки «Включить только мой код».
  2. Проверьте настройки «Символы» в параметрах отладки.

Таким образом, это решает мою основную проблему: я больше не могу использовать точки останова и всплывающее окно. Это странно, так как я думал, что для работы точек останова нужны символы, которые нужно загрузить. Итак, как могут работать точки останова, если символы не загружены? Может, это просто плохое сообщение?


Итак, вкратце, у вас возникла проблема, о которой мы не знаем. Вы изменили глобальные настройки отладчика, и теперь у вас есть две проблемы. Верните все на место и опишите свою первую проблему.
Ханс Пассан,

@HansPassant, это исходная проблема. Похоже, это началось после того, как мы перешли на VS2015. Я отменил все свои изменения "Будет ли это работать" перед публикацией. Снятие флажка «Оптимизировать код», похоже, помогло. Подробнее см. В рассматриваемом обновлении 2.
Сен,

Можете ли вы объяснить свое решение? какие проекты, на каких языках они работают, на что ориентированы, какой проект запускается?
Люсьен Вишик

Включите снова только мой код. Вы пытаетесь отладить ссылочные сборки, у которых не было исходного кода?
Игорь Квирино

3
Если вы хотите проголосовать за отчет об ошибке, касающийся этой проблемы, вот ссылка. https://connect.microsoft.com/VisualStudio/feedback/details/2116788/flag-optimize-is-passed-to-the-debugger-even- while-the-build-settings-optimize-code-is-not- enabled-on-mvc-c-web-projects-when-using-just-my-code
Патрик

Ответы:


95

Используйте Configuration Manager, чтобы проверить, каковы фактические настройки для конфигурации Debug - это в меню BuildConfiguration Manager ... - если они настроены на использование Release :

Диспетчер конфигурации

Кроме того, убедитесь, что проект правильно определяет DEBUG и что флажок «Оптимизировать код» не установлен:

Свойства


2
Я только что проверил там, и все они настроены на отладку. Я обновил пост скриншотом. Есть другие идеи?
Сен,

1
отредактировал мой вопрос. Проверяли код оптимизации, снятие отметки вроде помогло. Но подробности смотрите в вопросе.
Сен,

1
@Sen Похоже, кто-то неправильно сконфигурировал ваши настройки отладочной сборки. Отладочная сборка с оптимизированным кодом не имеет смысла. Что касается проблемы с символами: может быть, кто-то отключил их для отладочной сборки? Нажмите кнопку «Дополнительно» в настройках сборки и убедитесь, что для «Отладочной информации» установлено значение «Полная» в отладочной сборке.
кремор

6
Снятие флажка Оптимизировать код помогло. Не знаю, как это было проверено для начала, но как только это было отключено, все, казалось, снова начало работать. Все остальные настройки отладки были правильными, это была единственная неисправная. У меня также больше не появляется сообщение «Символы не загружены».
Сен

94

Это случилось со мной и на нескольких проектах. Я просмотрел свои настройки сборки, как это предложил stuartd . Однако в моих настройках сборки не было включено «Оптимизировать код» . Я включил его и сохранил проект. Потом снял галочку и снова сохранил. Задача решена.

Есть какая-то ошибка, из-за которой --optimize+флаг передается отладчику. Включение, а затем отключение - простой обходной путь, пока ошибка не будет исправлена.


1
Я видел это раньше в IntelliJ IDE, но никогда не видел до сих пор в Visual Studio. Как ни странно, у меня это тоже сработало.
ZaneDarken

1
Обновление 2017 г .: эта проблема все еще наблюдается в Visual Studio 2015 с обновлением 3. Принятый ответ не устранил проблему; этот ответ сделал.
Lews Therin

1
Этот ответ также исправил мою среду отладки. Спасибо !
bob.mazzo

1
Вот Это Да! У меня была именно эта проблема, и это сработало и для меня. VS 2015 U3. Невероятно ...
AbeyMarquez

1
Сообщество VS2017, все еще с этой проблемой. спасибо за это решение
Уильям Борго

20

Это начало происходить со мной после применения обновления 1. Существующие проекты начали это показывать, и я могу воспроизвести это с помощью нового проекта. Вся конфигурация устанавливается в DEBUG и Оптимизировать это не проверяется.

Кикер заключается в том, что запуск проекта в первый раз (или после очистки) выполняется нормально, без каких-либо сообщений. Остановка, а затем повторный запуск проекта (обратите внимание - проект не перестраивается ) отобразит диалоговое окно.

Единственное решение - отключить параметр « Только мой код», что кажется взломом, как это было до обновления 1 без каких-либо проблем.


6
Как бы то ни было, служба поддержки Microsoft воспроизвела проблему и расследует ее. Как только услышу, доложу / отвечу.
Джон Т.

2
Такая же ситуация и симптомы здесь появились после обновления 1 для VS2015. Запуск очистки перед каждым сеансом отладки можно использовать как обходной путь, потому что он действительно работает правильно в первый раз после этого. Просто делать перестроения не хватает, Clean требуется.
AronVanAmmers

2
Microsoft сообщает, что это известная проблема (изначально она передавалась группе отладчика, но было определено, что это проблема сборки, и теперь она находится в руках группы разработчиков системы Project. Есть другие открытые ошибки по этой проблеме, и это получил приоритет 1, поэтому должно быть на пути к следующему обновлению. Хотя, как и следовало ожидать, нельзя ничего обещать относительно того, когда оно будет выпущено (или что на самом деле содержится в обновлении). Итак, это известно и в настоящее время разрабатывается По крайней мере, отключение «Включить только мой код» в общих параметрах отладки, кажется, пока что обходится.
Джон Т.

Есть ли ссылка на эту проблему, чтобы мы могли следить за ее развитием?
SkyrawrCode


13

Если ни одно из упомянутых решений не помогло, проверьте AssemblyInfo.cs вашего проекта на предмет явного приложения DebuggableAttribute. Похоже, что он переопределяет параметры отладки / выпуска компилятора.

У меня была эта строка в файле в моем случае (устаревший проект, не знаю, как он туда попал). Удаление решило проблему:

[assembly: System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]

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

Да, это могло быть причиной и в моем случае. Спасибо, что поделился.
Дмитрий Ротай

10

Выберите меню « Отладка» → « Параметры» и снимите флажок « Подавить оптимизацию JIT» . Меня устраивает.

Источник: https://connect.microsoft.com/VisualStudio/feedback/details/2116788/flag-optimize-is-passed-to-the-debugger-even- while-the-build-settings-optimize-code-is- не-включен-на-mvc-c-web-projects-when-using-just-my-code


Ссылка (фактически) не работает: «Microsoft Connect больше не работает»
Питер Мортенсен

9

Я тоже столкнулся с этой проблемой. Исправление, которое помогло, заключалось в том, чтобы просто очистить ( Build > Clean Solution) и перестроить ( Build > Rebuild Solution) мои проекты.


Вы можете уточнить? Например, как это сделать (вызываемые команды меню и т. Д.)?
Питер Мортенсен

5

Ни один из предыдущих ответов не помог мне. Это исправило перезапуск IIS .


3

Просто добавив примечание к ответу Стюарта :

Убедитесь, что вы проверяете все зависимые проекты на наличие одинаковых настроек сборки. Вы получите такое же сообщение, если ваш основной проект имеет правильные настройки, а ваши зависимые проекты - нет. В ретроспективе это имеет очевидный смысл, но это не первое, что приходит на ум.


3

В моем случае проблема заключалась в том, что URL-адрес проекта IIS на веб-вкладке свойств моего проекта ASP.NET был установлен на неправильный URL-адрес.

Он указывал на http: // localhost, который я использовал с другой копией проекта. Адрес открытого мной решения был фактически настроен в моем локальном IIS как http: // localhost: 90 .

Изменение на правильный адрес устранило проблему.

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


2

Я перепробовал почти все из этого списка, но в конце концов я исправил это, открыв свойства решения и переключившись с «Несколько запускаемых проектов» на «Один запускаемый проект» и обратно.

  1. Щелкните решение правой кнопкой мыши и выберите «Свойства».
  2. В разделе «Общие свойства» измените выбор «Несколько запускаемых проектов» на «Один запускаемый проект».
  3. Нажмите ОК
  4. Запустить отладку
  5. Завершите отладку и повторите шаги 1–3, но вернитесь к «Несколько запускаемых проектов».
  6. Снова запустить отладку с несколькими проектами

2

У меня была такая же проблема ... Что бы я ни делал - ничего не получалось.

Проблема была в новом пустом проекте. В итоге я удалил проект и добавил новый - у нового проекта должно было быть другое имя ; если бы я использовал то же имя, ошибка просто появилась снова - даже после перезагрузки, очистки и перестройки ... Это должна быть ошибка в Visual Studio 2015.


2

Для меня это была ссылка NuGet с частного сервера NuGet. Я не знаю, как он был скомпилирован, но изменение ссылки на ссылку на проект помогло мне решить эту проблему.


1

Я открыл свой проект Visual Studio 2012 Pro в Visual Studio 2015 Express и столкнулся с той же проблемой.

Я проверил свои свойства решения → Свойства конфигурации и обнаружил, что для проекта установлено значение Release & x86.

Я снова изменил его на « Отладка» и « Любой процессор» , и запрос исчез.


1

В моем случае я разрабатывал плагин VSTO для Outlook , и Outlook случайно загрузил версию Release DLL-файла, которую я недавно установил во время тестирования своего установщика.

Похоже, Visual Studio пыталась использовать эту DLL вместо той, которую я ожидал отладить. Исправление того, какой файл DLL загружается Outlook, исправило это для меня.


0

Копирую мой другой ответ отсюда .

Как упомянул @romanoza, Microsoft обновила отчет об ошибке следующей информацией:

Снимите флажок с параметра Отладка -> Параметры -> Подавить оптимизацию JIT при загрузке модуля (только управляемый)

Это обходной путь. Позже они говорят:

Мы рекомендуем людям не устанавливать его, так как снятие флажка улучшит как производительность, так и поведение только моего кода в определенных сценариях.

Наконец, признание:

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




0

Шаги разрешения:

  • Перейдите к настройкам сборки на странице свойств проблемного проекта .

  • Прокрутите вниз до кнопки «Дополнительно ...» .

  • Убедитесь , что «Debug Info:» это не  установлено в «никто» .

    Я рекомендую вам использовать полную опцию.


Не забудьте сделать это для всех сборок, которые нужно отлаживать.
Игорь Квирино

0

После просмотра ссылки Патрика в качестве комментария к вопросу кто-то заметил обходной путь, который заключался в остановке сайта в IIS Express . Я смог предотвратить возникновение этой же проблемы, сделав это после остановки отладчика в Visual Studio.

Тем не менее, я изучал это больше, и я считаю, что это также может быть связано с настройкой «Изменить и продолжить» для отладчика. Когда я отключил это в меню ИнструментыПараметры ... Visual Studio, у меня больше не было проблемы. Но тогда это помешает вам использовать функцию « Изменить и продолжить» , поэтому я не уверен, стоит ли это того для вас.

Меню ИнструментыПараметрыОтладчикИзменить и продолжить (прокрутите список до конца) → снимите флажок « Изменить и продолжить» .

Я также испытал это внезапно после установки Обновления 1, но могло быть просто, что у меня изначально был этот параметр ... Я не уверен.


0

Если вам просто нужно продолжить без дальнейших задержек, выберите последний вариант во всплывающем окне, и все будет работать так же, как и раньше.

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


Изображения JPEG - не лучший выбор для снимков экрана. Можете ли вы заменить его (четкой) версией PNG (или даже GIF)?
Питер Мортенсен

0

Это было странное предупреждение.

Перестройка решения не обязательно приведет к удалению всех файлов DLL (особенно скопированных из зависимых проектов).

Однако при повторной сборке проекта зависимости это предупреждение исчезло.

Я столкнулся с этим с Visual Studio 2015 Update 3.


0

Мое решение немного отличалось от всех остальных и немного уникально.

Я работаю с веб-сайтом, который содержит сочетание управляемого кода и ASP Classic , которые ссылаются на одну и ту же сборку. Visual Studio жаловалась, что мой управляемый файл DLL был сборкой выпуска.

Проблема заключалась в неперехваченном исключении в моей сборке, но оно было выброшено страницей ASP Classic через взаимодействие. Visual Studio не смогла справиться с отладкой и отобразила сообщение об ошибке. То же исключение, выброшенное из управляемого кода, как и ожидалось, вызвало бы запуск отладчика.

Исправление проблемы в конструкторе моей управляемой сборки исправило все.

Теперь все имеет смысл, когда я оглядываюсь назад на общую картину, но в то время сообщение об ошибке привело меня по очень глубокому пути, и я попробовал все в ответе здесь, пока не получил это «А-ха!» момент.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.