对于 .NET 3.5 以外的任何项目,不能在 c# 项目中命中断点

Breakpoint cannot be hit in c# project for anything other than .NET 3.5

我刚刚将之前在 .NET 3.5 的 VS2008 运行ning 中的解决方案升级到 .NET 4.6 的 VS2015 运行ning。

项目的一些信息

  1. 该解决方案只有一个项目,它是一个 Unit Test Project 并简单地创建“AVTest.dll”,我们将其加载到 NUnit 以在某些硬件上执行一些功能测试。
  2. 我们不直接运行它,我们通过启动外部程序调试事件打开NUnit.exe。我们加载由 c# 构建生成的 .dll,NUnit 能够 运行 一系列测试。通过 运行 以这种方式使用 NUnit,我们过去能够调试单元测试中的例程。
  3. NUnit 版本是 2.5.10,它使用 .NET 2.0(考虑到我们 运行正在使用 .NET 3.5 并且与 .NET 3.5 决裂似乎是这样 不是这样) .我还升级了 o NUnit 的最新稳定版本 (2.6.4 .NET 3.5) 并且没有变化。
  4. 我们没有启动项目 - 一切都运行通过 NUnit。

一切都建立并且 运行s 正确但是我在尝试设置断点时收到以下错误:

The breakpoint will not currently be hit. No symbols have been loaded for this document.

当我切换回 .NET 3.5 时,我可以在代码中设置断点。我可以这样做的事实让我觉得我错过了一些关于.NET 版本,因为我不太熟悉 c#

我知道 this 个问题,并尝试了问题本身和第一页答案中的所有内容。

有没有关于如何检查为什么没有加载符号的任何进展?

新发展

当我附加到已经 运行ning 的 Nunit 测试时,我能够很好地调试。我不确定为什么它在 运行ning 之后没有附加(通过启动外部程序)或者为什么它在 3.5 而不是 4.6 中工作,但它可以被调试 ...

这原来是 NUnit 的一个简单问题,而不是 Visual studio。本质上,您需要将此添加到 <runtime\> 部分之前的 NUnit 配置文件:

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

此文件通常位于此处:

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

此答案的来源来自 here