我在Visual Studio 2010中有一个解决方案,包含9个项目,这些项目受Source Safe控制。我刚刚刷了我的硬盘并从WinXP x86升级到Win7 x64(早就应该了!)。当我将解决方案检查到“新”机器时,某些部件现在无法正常工作,所以我正在尝试调试它。
也许值得注意的是,我之前在VS2008工作过。当我升级时,我首先在VS2008中打开项目,以确保它工作,我注意到我需要调试的问题。我设置了一些断点,一对夫妇工作,一对夫妇没有。我无法立即弄清楚为什么有些没有破坏,所以我决定继续将项目升级到VS2010,希望它能够自行解决。它没有。
主项目在项目中的公共模块中调用公共子项,该项目是每个其他项目引用的库。我在主窗体Form_Load上有一个断点,一旦代码开始运行就会成功断开。 Form_Load调用前面提到的也有断点的public sub。但那个断点并没有打破。换句话说,调试器将在通话ProjectStartupActions()
上停止,但不会在定义Public Sub ProjectStartupActions()
或其中的任何一行停止。
如果我在Form_Load中的子调用上“Go To Definition”,它会跳转到我有断点的正确位置,所以我确定我已正确放置了断点。
我的项目>>调试>>对于所有项目,配置设置为“活动(调试)”,平台为“活动(任何CPU)”。为了进一步确认它应该在Debug而不是Release中运行,如果我打开一个资源管理器窗口到库项目的“Debug”文件夹并清理项目,该文件夹将清空。当我重建或运行文件时全部被替换。
感谢您的帮助。
哦是的,我也改变了Public Sub ProjectStartupActions()
的代码。我将MsgBox("Hello")
添加到sub中的第一行,但它永远不会弹出。
答案 0 :(得分:2)
将目标设置为x86以进行调试。 - Hans Passant
这很有效!谢谢!!我使用Configuration Manager将整个解决方案的目标更改为x86。
但为什么会这样呢?为什么“任何CPU”选项在主项目中断而不在库中?
答案 1 :(得分:0)
哦是的,我也改变了
Public Sub ProjectStartupActions()
的代码。我将MsgBox("Hello")
添加到sub中的第一行,但它永远不会弹出。
听起来您的项目依赖项不正确。确保主窗体项目依赖于具有ProjectStartupActions()
功能的库项目(并且不依赖于某些已构建的库装配)。
这应该是这样的,所以VS将在必要时重建库程序集并引用新构建的程序集。
您可能需要进行全面清理/重建才能让事情再次同步。您可能还需要检查和更新您可能拥有的任何部署项目/脚本。