6

我正在使用 Visual Studio Professional 2010 和 Team Foundation Server Express(测试版)。我的 VS 项目(C#.Net / WPF)已从 VS 2008(无 TFS)迁移到 VS 2010(有 TFS)。

每当我对我的代码应用更改并尝试调试我的应用程序时,我都会收到类似This breakpoint will not be hit.(德语:)Der Haltepunkt wird momentan nicht erreicht. Der Quellcode weist Unterschiede zur Originalversion auf.的消息,并且项目使用旧的可执行版本(最后一次成功构建的版本)启动。没有发生错误,代码正常,但也没有应用更改。

当我手动清理和重建我的项目时,一切正常 - 但必须解决这个问题吗?


编辑:我刚刚在我的 VS 解决方案中添加了一个新项目,并在 TFS 服务器上签入。使用这个新项目不会出现问题。即使我添加了我在上述项目中使用的相同依赖项,新项目的调试和构建也可以正常工作,而不会出现上述错误。

也许这些信息可以帮助您引导我找到解决方案。

4

6 回答 6

3

目前尚不清楚现有答案是否不够。我无法确切知道是什么导致了您的问题;但是,我可以详细说明这可能会出现的一些地方。

我通常看到的第一个领域是项目直接引用程序集时。您可以创建一个创建程序集的项目。另一个项目可能使用该程序集,您可以直接按程序集引用(而不是添加对“项目”的引用)。这使 VS 无法真正知道它需要首先“构建”引用的程序集,并且它有时会与调试符号 (PDB) 不同步。您可以在引用的属性中判断是否引用了项目或程序集(在解决方案资源管理器中展开引用,右键单击引用,然后选择属性)。引用的项目将没有特定版本属性,而程序集引用将。您有时也可以从 Project\Project Dependencies 中得知。如果您有对另一个项目生成的程序集的引用,但该项目不是 Project Dependencies 中的依赖项,则它可能是程序集引用。要解决此问题,您通常可以删除引用并添加对项目的引用。

我还发现有时断点会使调试器感到困惑。如果我有很多断点或者它们已经运行了很长时间,调试器有时会做一些奇怪的事情。如果我删除所有现有的断点(调试/删除所有断点)并重新应用它们,调试器通常会更快乐。

于 2012-08-27T16:18:30.700 回答
2

我的猜测是您将断点放在程序无法访问的地方。

前任:

const int x = 5;

if(this.x == 1)
   //do sth <--- breakpoint here
于 2012-08-28T08:12:33.657 回答
2

你可以在这里找到答案。程序集可能在 GAC 或项目中,或者某些项目需要重新生成以再次生成用于调试的 pdb 文件。如果您不选择重建它可能会使用旧的 pdb 文件。

于 2012-08-27T12:33:01.217 回答
2

如果您正在运行混合模式应用程序(非托管本机 C++ 和托管 C#),请确保Enable unmanaged code debugging在 C# 应用程序的“属性”窗口中进行设置。

于 2012-09-17T18:47:41.860 回答
1

你必须重建,没有更简单的方法。

需要重新创建程序数据库文件 (PDB)。您还应该将配置设置设置为调试。

这个问题的第一个答案也必须有帮助。

于 2012-08-28T03:54:03.593 回答
0

This happened to me when I started VS as an admin, and it also happened to me when the project is set to a different architecture than a DLL that I used in this project.

于 2014-09-21T17:24:33.490 回答