Visual Studio 2010 不调试 .NET 2.0 代码

Posted

技术标签:

【中文标题】Visual Studio 2010 不调试 .NET 2.0 代码【英文标题】:Visual Studio 2010 Not Debugging .NET 2.0 Code 【发布时间】:2011-03-03 16:59:45 【问题描述】:

请坚持我,这很奇怪。

自从从 VS2008 升级到 VS2010 后,一些工作人员(和我自己)发现我们无法再调试我们的代码。我们的断点都没有被命中。

我的工作包括编写 .NET 应用程序,这些应用程序运行在我们开发的自定义平台应用程序之上。这些应用程序编译为 .NET 2.0。调试通常涉及将我们平台应用的 exe 设置为要调试的启动程序,然后从那里启动。

有趣的是,我们在 Vista/Windows 7 机器上工作的开发人员都没有遇到任何问题——只有 Windows 2003/XP 人群。

Visual Studio 2010、.NET 2.0 和 Windows XP 的组合意味着我们无法再调试我们的应用程序。

我完全不知道为什么这个问题只会出现在 Windows 2003 和 XP 机器上。任何人都可以解释一下吗?

【问题讨论】:

只是为了检查一下,你没有编译到发布模式是吗? 否,编译到调试模式。 AFAIK 我所有的 VS2010 设置都与 VS2008 中的相同。 【参考方案1】:

感谢this post,我设法找到了解决方法。问题似乎是,当调试从本机 exe 调用的代码时,Visual Studio 会假定您正在.NET 4.0 中进行调试。随后,您的所有 .NET 2.0 代码都将运行,但调试器不会遇到您的任何断点。

解决方法是为调试器提供有用的提示,以 .exe.config 文件的形式出现在您启动启动 exe 的目录中。大致如下:

<?xml version="1.0"?>
<configuration>
  <startup>
    <supportedRuntime version="v2.0.50727" />
  </startup>
</configuration>

这是一个修复,但实际上并没有回答为什么会发生这种情况。

【讨论】:

感谢您发布此信息。它对我有用。不过需要注意的是,xxxx必须替换成你机器上的framework版本,可以在对应目录的名字中看到,例如:c:\Windows\Microsoft.NET\Framework\v2.0.50727 . 在上面的 XML 中缺少问号。第一行应该是这样的: 这很好用。我们正在做同样的事情,我们通过托管我们的库的 Delphi 32 位本机应用程序进行调试。 Visual Studio 2008 工作,2010 没有。通过上述修复,具有该确切内容的 .exe.config 文件,它按预期工作。谢谢!【参考方案2】:

尝试删除项目和解决方案的用户选项文件。删除所有 obj 和 bin 文件夹。更重要的是,清除临时文件。

使用 Visual Studio 2008 临时文件,例如:

("%APPDATA%") & "\Microsoft\VisualStudio\9.0\ProjectAssemblies") ("%USERPROFILE%") & "\Local Settings\Application Data\ApplicationHistory") ("%USERPROFILE%") & "\Local Settings\Application Data\Microsoft\VisualStudio\9.0\ProjectAssemblies") ("%WINDIR%") & "\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files")

现实生活中的例子

我在http://blogs.msdn.com/b/coding4fun/archive/2007/01/05/1417884.aspx 调试 Coding4Fun 的 搜索桌面 VB.NET 代码。我注意到在某些源代码文件中,缺少导航栏。此外,在编辑器的上下文菜单中,“转到定义”菜单项被禁用。我关闭了 Visual Studio,删除了解决方案 .suo 文件和所有项目 .user 文件,重新打开解决方案,一切恢复正常。

【讨论】:

我还没有机会尝试这个,所以对此表示歉意。我会尽快尝试。但只是出于兴趣,为什么这会影响我调试代码的能力? 清除 obj 和 bin 文件夹会删除任何包含调试信息的 pdb 文件。如果删除 suo 不能解决调试行为,这将是下一步。这与“清洗溶液”相同。 删除 Visual Studio 的临时文件通常可以解决引用问题。例如,可能不会命中断点,因为正在使用存储在这些临时文件夹中的不同版本的程序集。这在网站项目中的 C# 代码中更为常见。 您的用户调试配置,例如断点和其他调试设置,都存储在 suo 文件中。此文件可能会损坏。如果你有奇怪的调试行为,删除这个文件通常可以解决问题。 感谢您的建议(和解释)。不幸的是,这似乎并没有解决我原来的问题。不过我以后会记住的。干杯。【参考方案3】:

我遇到了这个问题,无法在 Outlook 中使用配置文件。 Outlook 在尝试启动时抱怨。所以,我确实找到了另一种解决方法。我将目标平台更改为 4.0 而不是 2.0。这带回了我的调试模式。我在发布之前将其改回,然后在另一台 2.0 机器上进行额外测试,无需调试。

【讨论】:

【参考方案4】:

我也有这个问题。在 Visual Studio 2010 中转换解决方案后,调试按钮不起作用。在对问题进行故障排除时,我发现我无法删除 bin\debug 文件夹中的各种文件中的一两个。它可能是 .vshost.exe 文件。文件上的锁定让我意识到我在 Visual Studio 2008 中打开并最小化了解决方案。哎呀 :) 我关闭了 VS 2008,它在 VS 2010 中工作。

【讨论】:

以上是关于Visual Studio 2010 不调试 .NET 2.0 代码的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2010 不调试 .NET 2.0 代码

Visual Studio 2010无法启动调试

T4 预处理模板调试不起作用 - Visual Studio 2010 RTM

C# Visual Studio 2010 未开始调试

Visual Studio 2010 快捷键

尝试使用 Visual Studio 2010 调试 dll (C++) 时出现错误消息