【问题标题】:VS 2010, NUNit, and "The breakpoint will not currently be hit. No symbols have been loaded for this document"VS 2010、NUUnit 和“断点当前不会被命中。没有为此文档加载任何符号”
【发布时间】:2011-03-05 20:15:24
【问题描述】:

使用 Windows 7 32 位、VS 2010、.NET 4 DLL、NUnit (2.5.5) 对应用程序进行单元测试。我目前收到以下错误;看了很多帖子,尝试了以下方法:

  1. 重启机器
  2. 重启VS
  3. 删除 bin/obj 并重新加载
  4. 清理/重建

但我无法让 NUnit 在运行时达到我的断点;

我将 NUUnit 测试项目设置为指向 nunit.exe,并加载测试 .NET 4 DLL,但是当我运行它时没有找到断点,“没有加载任何符号”。我尝试了调试 >windows > 模块,当我运行它时它甚至没有显示我的单元测试项目。

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

但是我在使用 nunit 代理时也遇到了错误。我使用的是 nunit-agent-x86.exe,但我得到一个 system.formatexception 并且它崩溃了......

有人可以帮忙吗?

谢谢。

【问题讨论】:

    标签: c# .net visual-studio visual-studio-2010 nunit


    【解决方案1】:

    我需要打开 NUnit GUI

    工具->设置->IDE支持[点击Visual Studio]

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

    我需要

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

    &lt;configuration&gt;

    【讨论】:

      【解决方案2】:

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

      <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>
      

      【讨论】:

        【解决方案3】:

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

        http://www.nunit.org/index.php?p=nunit-agent&r=2.5.10

        【讨论】:

          【解决方案4】:

          如果以上所有方法都没有帮助,请在 Visual Studio 中打开 NUnit 项目的属性,打开“构建”选项卡,单击“高级”按钮并确保“调试信息”设置为“完整”

          【讨论】:

            【解决方案5】:

            解决方法是:单独启动 NUnit,然后在 VS 2010 中进行调试 > 附加到进程,并附加到 nunit-agent.exe 进程,而不是 nunit 进程。 Nunit 进程仍然没有为我做这件事。

            【讨论】:

            • 这个问题快把我逼疯了!我有一个 Visual NUnit 无法工作的项目,并且使用 nunit-x86 启动我的测试项目,因为外部程序不起作用,附加到 nunit 也不起作用。我的进程列表中也没有 nunit-agent.exe,只有 nunit-x86。你以前见过这个吗?
            • Nunit 可以在运行程序中的单独进程中运行您的测试,这可能导致即使您附加到 nunit.exe 进程也不会加载调试符号。检查你在视觉 nunit 中的设置。它还可以在一个单独的进程中运行每个测试程序集,因此很难附加。
            • 附加到 nunit-agent-x86.exe 进程为我解决了这个问题。谢谢!
            • 这个解决方案也适用于我,我经常将带有 Visual Studio 2008 的 nunit 附加到 nunit 进程而不是 nunit-agent.exe 进程
            • 这个解决方案也对我有用。我只是无法更早地调试我的 NUnit 项目。另外,我正在使用 NUnitRunners Nuget 包。但我不认为这有什么不同。现在我有另一个问题 - 我如何告诉 VS 2010 在我运行 NUnit 项目时自动附加到 nunit-agent ?我不想一次又一次地手动附加这些东西。
            【解决方案6】:

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

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

            “sku”部分仅在使用 .NET 4 的客户端配置文件运行时才需要。请注意,先前的答案显示使用已过时的“requiredRuntime”。

            【讨论】:

              【解决方案7】:

              还有另一个类似的问题here on Stack Overflow,我在那里发布了my answer 对我有用的内容。我可以设置断点并直接从 Visual Studio 2010 使用 Debug -> Start New Instance 启动 NUnit(我认为这是您的目标)。

              我在项目->属性->调试中将nunit.exe设置为外部程序并添加:

              <startup>
                  <requiredRuntime version="4.0.30319" />
              </startup>
              

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

              【讨论】:

              • 部分添加到 .config 文件对我有用。顺便说一句,它直接在
              • @Jan:你说的很对,只有放在最上面才行!
              • 感谢您的解决方案。请将此视为已接受的答案。注意,这对我有用: 中,并使用
              • 这也解决了我的问题,运行 NUnit 2.5.7。它适用于 nunit.exe 和 nunit-x86.exe 的配置文件。
              • 这解决了 NUUnit 2.6 在 x64 机器上的问题。以下 nunit.exe.config 不起作用 - 我需要 Dave 上面给出的配置。
              【解决方案8】:

              我得到一个网站项目的“断点不会被击中......没有加载符号......”。发现我的网站存在构建错误(其中一个引用的 dll 因某种原因丢失)。直到我在 VS2010 中选择 View=>Error list,重建之前,重建才显示问题。替换 bin 目录中丢失的 dll 并更新引用解决了我的问题。

              【讨论】:

                【解决方案9】:

                您是否正在运行 NUnit,然后加载 DLL? 尝试打开项目属性,调试选项卡,将启动操作切换为“启动外部程序”,指向 NUnit exe,将您的 dll 名称放在“命令行参数”中。 然后启动库项目,右键单击它并选择 Debug -> start new instance。

                【讨论】:

                • 我两者都做;独立运行,或使用 nunit 运行项目。仍然没有运气,遇到同样的问题......
                • 这对我也不起作用。我仍在研究这个问题,试图弄清楚如何让它发挥作用。
                猜你喜欢
                • 2014-11-13
                • 2011-02-12
                • 2011-08-13
                • 2012-04-05
                • 2011-09-15
                • 2015-01-23
                • 2015-12-20
                • 2011-07-08
                • 2012-09-21
                相关资源
                最近更新 更多