【问题标题】:Visual Studio 2010 will attempt to start build after detaching from remote debuggerVisual Studio 2010 将在与远程调试器分离后尝试开始构建
【发布时间】:2011-04-01 17:44:55
【问题描述】:

我在使用 Visual Studio 2010 时一直遇到间歇性问题:我正在开发一个相当大的解决方案(200 多个项目),因此即使稍作改动,构建整个解决方案也需要很长时间。

我经常需要在远程机器上调试进程。

我注意到,Visual Studio 经常会在分离或终止远程进程时出现挂起。经过仔细检查,似乎在调试器断开连接后,VS 将立即开始构建解决方案,并且无法通过按 Ctrl+Break 取消构建,实际上在构建完成或失败之前根本没有菜单工作,并且大型解决方案需要很长时间。我发现可以解决此问题的一种方法是终止由 VS 生成的 MSBuild.exe 进程,这会导致构建失败。

有人见过这种行为吗?有什么解决办法吗?很烦人

编辑:这是进程浏览器在与调试器断开连接后的样子:http://vvcap.net/db/oz1NMoyXnWWlQp8mWaRY.htp

【问题讨论】:

  • 只是将信息附加给他人的注释;您是否有 200 个解决方案项目? (除非,我不明白为什么金额很重要)。如果它是 200 in One 解决方案,那么我对它的真正运作方式印象深刻,并且会倾听其他人的意见,
  • 调试会话结束后的构建听起来像是触发了编辑并继续。在调试过程中是有意还是无意地修改了代码?是否在“工具 -> 选项 -> 调试 -> 编辑并继续”下启用远程调试时的 EnC(这假定为原生代码;我没有看到任何项目类型的提及)?
  • @Jonas,200 个项目之所以重要,是因为构建需要很长时间。 @Pete Huene,是的,我确实启用了编辑和继续,我同意这可能是问题所在。让我看看关闭它是否有帮助。请发表实际回复,如果有效,我会接受。

标签: visual-studio-2010 remote-debugging


【解决方案1】:

当您在断点处于活动状态时编辑代码时会发生这种情况。调试会话结束后,VS 会自动重建解决方案以将更改合并到二进制文件中,而不仅仅是在内存中。这确实会使 VS 有点紧张,我认为它试图阻止你做任何会中断该操作的事情。这通常不会超过几秒钟,但我不知道在这么大的解决方案中会发生什么。如果您习惯于在调试时编辑代码,那么禁用 E+C 可能不是您会考虑的解决方法之一。

拥有包含 200 个项目的解决方案往往会考验耐力的极限。请尝试将其缩减为一组核心项目,剔除那些不应该更改的项目,因为这样做会破坏更高层中的太多代码。或者只是创建另一个解决方案并仅包含您要测试的项目。它不会影响调试会话,您仍然可以正常调试此类项目中的代码。当然没有 E+C。

【讨论】:

  • 我真的希望 E&C 是这里的问题,但事实并非如此。禁用后,同样的问题。 vvcap.net/db/LcggLsil8CjJ_TLOkEZ-.htp
  • @hans,我可以请您在这里查看一个与远程调试相关的问题吗:tinyurl.com/ovglq92?
【解决方案2】:

解决方案文件中如此多的项目可能需要大量时间来构建。我无法(我自己)想象)按下 ctrl+b 之前的担忧(知道这需要我工作时间的 30 秒)。 我会告诉我的老板,由于将项目重构为可维护和可编译的部分(每个目的/层将相同的 dll 共享到每个库中),我们非常需要插入 40 小时的延迟。如果延迟是关于纯粹的项目重新定义或只是将解决方案拆分为多个项目,则完全取决于您的工作。至少我预计会出现问题并即将改变的部分,

【讨论】:

  • 您是否打算将此作为评论回复?
  • 只是想确保与领先的@提及。
  • 感谢彼得的理解,我现在重新写了签名,
猜你喜欢
  • 2011-06-22
  • 2011-07-30
  • 1970-01-01
  • 2013-06-15
  • 2014-05-09
  • 2011-03-15
  • 2011-08-19
  • 2012-07-19
  • 2011-04-20
相关资源
最近更新 更多