Точка останова не может быть достигнута в проекте c # для чего-либо, кроме .NET 3.5

Я только что обновил решение, ранее работающее в VS2008 на .NET 3.5, до VS2015, работающее на .NET 4.6.

Немного информации о проекте

  1. В решении есть только один проект, это Unit Test Project, и он просто создает 'AVTest.dll`, который мы загружаем в NUnit, чтобы выполнить некоторые функциональные тесты на некотором оборудовании.
  2. Мы не запускаем его напрямую, мы открываем NUnit.exe через событие отладки start external program. мы загружаем .dll, созданную сборкой C #, и NUnit может выполнить серию тестов. Запуская NUnit таким образом, мы в прошлом могли отлаживать подпрограммы в модульном тесте.
  3. Версия NUnit - 2.5.10, в которой используется .NET 2.0 (учитывая, что мы работали и ломались с .NET 3.5, похоже, это, вероятно, не так). Также я обновил o Последнюю стабильную версию NUnit (2.6.4 .NET 3.5) и без изменений.
  4. У нас нет стартап-проекта - все работает через NUnit.

Все строится и работает правильно, однако при попытке установить точки останова я получаю следующую ошибку:

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

Когда я снова переключаюсь на .NET 3.5, я могу устанавливать точки останова в коде. Тот факт, что я могу это сделать, заставляет меня думать, что мне не хватает чего-то простого в версии .NET, поскольку я не так знаком с c#.

Мне известно о этот вопрос и попробовали все, что описано в самом вопросе и на первой странице ответов.

Были ли какие-нибудь разработки, как проверить, почему не было загруженных символов?

Новое развитие

Я могу нормально отлаживать, когда подключаюсь к уже запущенному тесту Nunit. Я не уверен, почему он не прикрепляется после запуска (через внешнюю программу запуска) или почему это работает в 3.5, а не в 4.6, но его можно отладить ...


person Fantastic Mr Fox    schedule 09.10.2015    source источник
comment
это для winforms или WebForms ..? попробуйте выполнить очистку всего решения, затем перестройте и нажмите F10, чтобы посмотреть, не попадает ли оно в какие-либо точки останова ... возникают ли у вас какие-либо ошибки, приложение закрывается ...? или просто открывается и все ..?   -  person MethodMan    schedule 09.10.2015
comment
Итак, когда вы подключаетесь к процессу, какой тип кода вы отлаживаете?   -  person DeanOC    schedule 09.10.2015
comment
@ben Что такое тип проекта? Библиотека классов? Проект не является приложением или веб-проектом. Он создает .dll для использования с NUnit - даже веб-проекты создают .dll. Какая версия nUnit? Как вы запускаете свой код? Сколько проектов в решении? После обновления он мог изменить запускаемый проект   -  person MickyD    schedule 09.10.2015
comment
@Roy Я ответил на твои вопросы, насколько мог, в последней редакции. Если вы хотите, чтобы я уточнил, я могу изучить все что угодно.   -  person Fantastic Mr Fox    schedule 09.10.2015
comment
Бен, спасибо за дополнительную информацию. Я только что провел тест с nUnit 2.6.4 и библиотекой классов .NET 4.6 (с текстовыми приборами nUnit), и он работал нормально. Не уверен, в чем проблема, к сожалению   -  person MickyD    schedule 09.10.2015
comment
@Roy Ага, я тоже могу создать проект с нуля, и он работает. Я чувствую, что это, вероятно, связано с объединенным обновлением VS + .NET. Думаю о том, чтобы нанести ядерный удар по проекту и построить с нуля, но он действительно большой, так что это последнее средство. Продолжайте придерживаться идей, готов пробовать что угодно.   -  person Fantastic Mr Fox    schedule 09.10.2015
comment
Я вижу, вы используете внешний GUI runner, и вы упомянули, что он использует .NET 2. Да, похоже, это так. Они также говорят , хотя тесты могут выполняться в других версиях с использованием отдельный процесс. Это поможет? Может есть файл .config для редактирования? Помню, однажды мне пришлось отредактировать файл конфигурации для чего-то еще (к сожалению, не помню ссылку)   -  person MickyD    schedule 09.10.2015
comment
Согласно предыдущему комментарию DeanOC, когда вы подключаете отладчик, вам нужно выбрать, какой тип кода (-ов) присоединить. Управляемый (v3.5, v3.0, v2.0) не будет ловить ваши точки останова, вам необходимо прикрепить тип кода Managed (v4.5, v4.0)   -  person gigaplex    schedule 09.10.2015
comment
@gigaplex, как изменить Тип управляемого кода? Я не могу найти для этого никакого варианта.   -  person Fantastic Mr Fox    schedule 09.10.2015
comment
При подключении к уже запущенному процессу есть кнопка для настройки типа кода. При запуске процесса с уже подключенным отладчиком через Visual Studio я не уверен, что вы можете указать, какой режим .NET нужно подключать как. Я считаю, что он автоматически определяет на основе сборки, с которой вы начинаете. Я бы предложил запускать без подключенного отладчика, а потом подключать вручную.   -  person gigaplex    schedule 12.10.2015


Ответы (1)


Это оказалось простой проблемой с NUnit, а не с Visual Studio. По сути, вам нужно добавить это в файл конфигурации NUnit перед разделом <runtime\>:

  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
  </startup>

Этот файл обычно находится здесь:

C: \ Program Files (x86) \ NUnit 2.5.10 \ bin \ net-2.0 \ nunit-x86.exe.config

Благодарность за этот ответ взята из ​​здесь.

person Fantastic Mr Fox    schedule 12.10.2015