Включение и отключение отладки «Шаг в» для определенного проекта в решении Visual Studio

У меня есть решение Visual Studio с четырьмя проектами C# в нем. Я хочу войти в код вспомогательного проекта в решении из моего основного проекта, но когда я использую клавишу «Шаг в», он просто пропускает вызов в этот другой проект. Я установил точки останова во вспомогательном проекте, и они игнорируются, и я не могу, хоть убей, заставить его входить в какие-либо ссылки на этот проект.

Все настроено на компиляцию как «Отладка», и я видел, как Visual Studio предупреждала меня, что мои точки останова не будут достигнуты раньше - в данном случае этого не происходит. Это выглядит так, как будто мой код будет отлаживаться, но затем во время выполнения где-то есть параметр, который сообщает Visual Studio не выполнять пошаговое выполнение кода в этом проекте. Все остальные проекты в моих решениях отлаживаются без проблем.

В каком поле я установил такое поведение?

ОБНОВЛЕНИЕ ДЛЯ ЯСНОСТИ: Параметр «Только мой код» в настоящее время отключен. Кроме того, поскольку код принадлежит проекту в моем решении, я не думаю, что здесь применим параметр «Только мой код». Я думал, что это применимо только к предварительно скомпилированному коду, для которого у меня не было исходного кода, но, поскольку у меня есть исходный код в моем проекте, я не думаю, что этот параметр имеет какой-либо эффект.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
21
0
41 841
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Не уверен, что это так, но «Инструменты> Параметры> Отладка> Общие: Включить только мой код» - возможно. (Я предпочитаю всегда не ставить этот флажок.)

Ответ принят как подходящий

Одна вещь, которую следует проверить, - это то, что ваша вспомогательная сборка проекта не была установлена ​​в GAC. Откройте командную строку и выполните следующее, чтобы убедиться ...

гакутил / л AssemblyName

Вам необходимо убедиться, что в поддерживаемых проектах есть файлы pdb, иначе Visual Studio не будет иметь необходимой информации для пошагового выполнения кода.

Пара возможностей:

  • Есть флажок, чтобы войти в «только мой код». Его цель - сделать так, чтобы вы не могли войти в код Microsoft Framework (если только вы не снимете флажок).

  • Вы можете попробовать перекомпилировать вспомогательный код, чтобы убедиться, что код, который вы отлаживаете, точно соответствует файлу кода, который вы просматриваете. VS заботится об этом и отключит точку останова, если вы поместите ее в файл кода, версия которого не совпадает. Также убедитесь, что файл PDB находится в том же каталоге, что и DLL.

Оказывается, сборку нужно было скопировать в GAC, прежде чем ее можно было отлаживать. В параметре отладки «Только мой код» есть возможность подавить ошибку, если у вас нет кода пользователя, и она подавляла следующую ошибку:

The Following mobile was built either with optimizations enabled or without debug information. (Module name and path) To debug this module, change its build configuration to Debug mode.

Поскольку я создавал его в конфигурации отладки, я поискал это сообщение об ошибке и получил следующее:

http://claytonj.wordpress.com/2008/01/04/the-following-module-was-built-either-with-optimizations-enabled-or-without-debug-information/

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

Боже мой, эта проблема стоила мне утра. Спасибо за это.

mmr 18.02.2010 22:42

Вероятно, это глупый вопрос, но как скопировать dll (или любой файл) в C: Windows / Assembly в Windows7? Перетаскивание, копирование и вставка недоступны для этого конкретного каталога

rank1 03.07.2014 12:02

У меня описана та же проблема, а также 4 проекта в решении, но я понятия не имею, что такое GAC и как решить эту проблему.

solujic 10.03.2017 17:31

Если у вас есть исходный код библиотеки DLL, в которую вы пытаетесь войти, сделайте следующее:

  1. Щелкните проект, в который эти библиотеки добавлены в качестве ссылки, и удалите их.
  2. Добавьте проект (ы), соответствующий dll (ам) к решению
  3. Щелкните правой кнопкой мыши проект -> Добавить ссылку -> Выберите только что добавленные проекты.

Теперь установите точку останова и отладьте код .. Вы сможете перейти к коду.

Причина проблемы заключается в том, что ваша программа все еще ссылается на старую dll (без исходного кода), поскольку она была добавлена ​​в ваш проект в качестве ссылки. После того, как вы удалите эту dll и добавите проект (исходный код dll) dll, Visual Studio сможет войти в ваш код.

В Visual Studio 2013 один из способов вызвать такое поведение - установить для конфигурации сборки значение Release.
. Верните его в Debug и посмотрите, поможет ли это.

Хм, это заставило мои контрольные точки работать дальше, объяснение почему?

solujic 10.03.2017 18:11

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