Visual Studio 2010不能对.NET 2.0代码进行调试

5
请跟着我,这是一个奇怪的问题。
自从升级到VS2010后,我和我的同事发现我们无法再调试代码。我们所有的断点都没有被触发。
不想透露太多细节,我的工作是编写运行在我们开发的自定义平台应用程序之上的.NET应用程序。这些应用程序被编译为.NET 2.0。调试通常涉及将我们的平台应用程序的exe设置为启动程序进行调试,并从那里启动。
有趣的是,我们在Vista / Windows 7机器上工作的开发人员没有任何问题 - 只有Windows 2003 / XP群体有问题。
Visual Studio 2010、.NET 2.0和Windows XP的组合意味着我们无法再调试我们的应用程序。
我绝对不知道为什么这个问题只会在Windows 2003和XP机器上出现。有谁能解释一下吗?

只是确认一下,你没有编译成发布模式,对吧? - Jaymz
不,编译为调试模式。据我所知,我的VS2010设置与VS2008中的设置相同。 - Seb Charrot
4个回答

7
我已经找到了一个解决方法,感谢这篇文章。问题似乎是在从本机exe调用的代码中进行调试时,Visual Studio会假定您正在使用.NET 4.0进行调试。随后,所有的.NET 2.0代码都将运行,但调试器不会触发任何断点。
解决方法是在您启动启动程序exe的目录中提供一个.exe.config文件,以便为调试器提供有用的提示。大致如下:
<?xml version="1.0"?>
<configuration>
  <startup>
    <supportedRuntime version="v2.0.50727" />
  </startup>
</configuration>

这个方法可以解决问题,但并没有回答为什么会出现这种情况。

谢谢您发布这个。它对我有用。但需要注意的是,xxxx必须替换为您机器上的框架版本,可以在相应目录的名称中看到,例如:c:\Windows\Microsoft.NET\Framework\v2.0.50727。 - Helge Klein
1
在上面的XML中缺少问号。第一行应该像这样:<?xml version ="1.0"?> - Helge Klein
这个很好用。我们正在做同样的事情,通过一个托管我们库的Delphi 32位本地应用程序进行调试。Visual Studio 2008可以工作,但2010不行。有了上述修复方法,一个包含完全相同内容的.exe.config文件,它按预期工作了。谢谢! - Lasse V. Karlsen

1

尝试删除项目和解决方案的用户选项文件。删除所有的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"

真实案例

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


我还没有机会尝试这个,所以很抱歉。我会尽快尝试。但是出于好奇,为什么这会影响我的调试能力呢? - Seb Charrot
清空 obj 和 bin 文件夹会删除保存调试信息的 pdb 文件。如果删除 suo 没有解决调试行为问题,这将是下一步操作。这与“清理解决方案”相同。 - AMissico
删除Visual Studio的临时文件通常可以解决引用问题。例如,断点可能无法被触发,因为使用了存储在这些临时文件夹中的程序集的不同版本。这在Web站点项目中的C#代码中更为常见。 - AMissico
1
您的用户调试配置,例如断点和其他调试设置,存储在 suo 文件中。该文件可能会损坏。如果您遇到奇怪的调试行为,删除此文件通常可以解决问题。 - AMissico
谢谢你的建议(和解释)。不幸的是,这似乎没有解决我的原始问题。不过我会记住它的,在将来有用的时候。谢谢。 - Seb Charrot

1

我在这个问题上遇到了困难,无法使用配置文件与Outlook配合。Outlook在尝试启动时报错。所以,我找到了另一个解决办法。我将目标平台更改为4.0而不是2.0。这样就恢复了我的调试模式。在发布之前,我会将其改回,并在另一台没有调试功能的2.0机器上进行额外的测试。


0

我也遇到了这个问题。在将一个解决方案转换为Visual Studio 2010后,调试按钮无法正常工作。在解决问题时,我发现无法删除bin\debug文件夹中的某一个或两个文件。可能是.vshost.exe文件。锁定文件使我意识到我在Visual Studio 2008中打开并最小化了该解决方案。糟糕 :) 我关闭了VS 2008,然后在VS 2010中解决了该问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接