关于c#:VS 2010,NUNit,“断点当前不会被击中。

VS 2010, NUNit, and “The breakpoint will not currently be hit. No symbols have been loaded for this document”

使用Windows7 32位,vs 2010,.net 4 dll,nunit(2.5.5)对应用程序进行单元测试。我当前收到以下错误;看到大量帖子并尝试以下操作:

  • 再启动机
  • 重启vs
  • 删除bin/obj并重新加载
  • 清洁/重建
  • 但我不能让nunit在运行时碰到我的断点;

    我将nunit测试项目设置为指向nunit.exe,并加载测试.NET 4 dll,但当我运行时,它找不到断点,"没有加载任何符号"。我试过debug>windows>模块,当我运行它时,它甚至不显示我的单元测试项目。

    我发现了这个,要使用nunit代理:http://groups.google.com/group/nunit-discus/browse hread/thread/5680d7def5b6982f

    但当我使用Nunit代理时也会出错。我使用的是nunit-agent-x86.exe,但我得到了System.FormatException,它崩溃了…

    有人能帮忙吗?

    谢谢。


    在StackOverflow上还有另一个类似的问题,我在这里发布了我的答案,以及对我有用的内容。我可以使用debug->start new instance(我认为这是您的目标)直接从Visual Studio 2010设置断点并启动nunit。

    我在project->properties->debugging中将nunit.exe设置为外部程序,并添加:

    1
    2
    3
    <startup>
        <requiredRuntime version="4.0.30319" />
    </startup>

    到nunit安装目录中nunit可执行文件旁边的nunit.exe.config文件。


    解决方法是:单独启动nunit,然后在vs 2010中,执行debug>attach to process,并附加到nunit-agent.exe进程,而不是nunit进程。努尼特过程仍然没有为我做这件事。


    如果以上所有操作都不起作用,请在Visual Studio中打开Nunit项目的属性,打开"构建"选项卡,单击"高级"按钮并确保"调试信息"设置为"完整"。


    在nunit-x86.exe.config中添加以下部分对我有效:

    1
    2
    3
      <startup>
          <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/>
      </startup>

    只有在使用.NET 4的客户端配置文件运行时才需要"sku"部分。请注意,前面的答案显示使用了"RequiredRuntime",这已过时。


    我得到了"突破点不会被击中…没有为网站项目加载符号…。发现我的网站中存在生成错误(某个引用的dll由于某种原因丢失)。重新生成之前,在VS2010中选择了View=>Error List之前,未显示问题。替换bin目录中丢失的dll并更新引用解决了我的问题。


    我需要打开修女的GUI

    Tools->Settings->IDE Support [click Visual Studio]

    然后在nunit-x86.exe.config(不是nunit-exe.config,不是nunit.agent.exe.config,不是nunit console.exe.config)中,

    我需要

    1
    2
    3
       <startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version="v4.0.30319" />
      </startup>


    在使用.NET Framework 4.5时,我在Visual Studio 2012社区版下遇到了此问题。nunit.exe.config应该这样(最受欢迎的答案中的解决方案):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <configuration>
        <!--
       The GUI only runs under .NET 2.0 or higher. The
       useLegacyV2RuntimeActivationPolicy setting only
       applies under .NET 4.0 and permits use of mixed
       mode assemblies, which would otherwise not load
       correctly.
      -->
        <startup useLegacyV2RuntimeActivationPolicy="true">
            <!-- Comment out the next line to force use of .NET 4.0 -->
             <requiredRuntime version="4.0.30319" />
        </startup>

    附加nunit-agent.exe进程而不是nunit.exe,因为当dotnet版本与nunit自身使用的版本不同时,nunit会由nunit代理执行任务。请参见下面的链接。

    http://www.nunit.org/index.php?P=Nunit代理&R=2.5.10


    您正在运行nunit,然后加载dll吗?尝试打开项目属性、调试选项卡,将启动操作切换到"启动外部程序",指向nunit exe,将dll名称置于"命令行参数"中。然后启动库项目,右键单击它并选择Debug->Start New Instance。