.NET 3.5 以外的任何东西都不能在 c# 项目中命中断点
Posted
技术标签:
【中文标题】.NET 3.5 以外的任何东西都不能在 c# 项目中命中断点【英文标题】:Breakpoint cannot be hit in c# project for anything other than .NET 3.5 【发布时间】:2016-01-06 19:13:36 【问题描述】:我刚刚将以前在.NET 3.5
上运行的VS2008 中的解决方案升级到在.NET 4.6
上运行的VS2015。
有关项目的一些信息
-
该解决方案只有一个项目,它是
Unit Test Project
,只需创建“AVTest.dll”,我们将其加载到NUnit 中,以便在某些硬件上执行一些功能测试。
我们不直接运行它,我们通过启动外部程序调试事件打开NUnit.exe。我们加载由 c# 构建生成的 .dll,NUnit 能够运行一系列测试。通过以这种方式运行 NUnit,我们过去能够在单元测试中调试例程。
NUnit 版本是 2.5.10,它使用 .NET 2.0(鉴于我们正在使用 .NET 3.5 运行和中断,这可能不是)。我还升级了 o NUnit 的最新稳定版本(2.6.4 .NET 3.5),没有任何变化。
我们没有启动项目 - 一切都通过 NUnit 运行。
一切都可以正确构建和运行,但是在尝试设置断点时出现以下错误:
当前不会命中断点。没有为此文档加载任何符号。
当我切换回 .NET 3.5 时,我可以在代码中设置断点。我可以做到这一点的事实让我觉得我错过了 .NET 版本的一些简单的东西,因为我我对c#
不太熟悉。
我知道this 的问题,并且已经尝试了问题本身和第一页答案中的所有内容。
在如何检查为什么没有加载符号方面有任何进展吗?
新的发展
当我附加到已经运行的 Nunit 测试时,我能够很好地调试。我不确定为什么它在运行后没有附加(通过启动外部程序)或者为什么它在 3.5 而不是 4.6 中有效,但它可以被调试......
【问题讨论】:
这是用于 winforms 还是 WebForms..?尝试对整个解决方案进行清理,然后重新构建并点击F10
开始查看它是否遇到任何断点..您是否收到任何错误应用程序关闭..?或者只是打开就可以了..?
那么当你附加到进程时,你在调试什么代码类型?
@ben 项目类型是什么?类库? “该项目不是应用程序或 Web 项目。它创建一个与 NUnit 一起使用的 .dll” - 甚至“Web 项目”也会创建一个 .dll。什么版本的 nUnit?你是如何运行你的代码的?解决方案中有多少个项目?升级后可能改变了启动项目
@Roy 我已经在最新的编辑中尽我所能回答了你的问题。如果你想让我进一步澄清,我可以调查任何事情。
本,谢谢你提供的额外信息。我刚刚使用 nUnit 2.6.4 和 .NET 4.6 类库(带有 nUnit 文本固定装置)进行了测试,它运行良好。不知道问题出在哪里
【参考方案1】:
结果证明这是 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。
【讨论】:
以上是关于.NET 3.5 以外的任何东西都不能在 c# 项目中命中断点的主要内容,如果未能解决你的问题,请参考以下文章
.NET 3.5 未能加载文件或程序集“Microsoft.Web.Infrastructure”(解决后追加50-200悬赏)
C# NET 3.5:属性或索引器不能分配给“--”,它是只读的
VS2008 Net 3.5 C# 不能包含 NAudio.csproj:“$”和“=>”的含义
如何将托管 c++ 库导入 C# 应用程序(目标 .net 版本 3.5)