在Visual Studio 2010中调试源代码时发出的警告

我在源代码中设置了断点,但它会告诉我源代码与原始代码不同。 它不会命中breakpoint.Hit位置允许更改源代码。 任何人都可以解释我有问题吗?

源代码文件的校验和与校验和不匹配到PDB文件中。

解决那个重建解决方案。

解决方法:在断点的“位置”属性中选中“ Allow source code to be different

编译和运行发布版本时可能会发生这种情况。 在Release版本中,编译器进行可能更改或删除代码部分的优化,请参考以下示例:

 static void Main() { int x = 10 + 5; // <---- BREAKPOINT HERE Console.WriteLine("Foo"); } 

如果在调试版本中编译并运行该代码,则会像往常一样触发断点。 在发布版本中,编译器将看到“x”从未使用过,并且将“优化掉”整行,这意味着断点永远不会被击中!

做一个Build – > Clean Solution,然后Build – > Build Solution。 然后再次尝试调试,确保活动配置是调试。

您的源代码与编译时不同。 您可以停止,清理和重建项目。

当我在一个解决方案中有一个类库而在另一个解决方案中有一个Web项目时,我遇到了这个问题。 在逐步执行websolution中的代码时,它进入了我的类库。 这导致在我的Web解决方案中打开类库文件。

当我在类库中更改了一些代码时出现了问题。 像往常一样,我按照正确的顺序对两个项目进行了构建。 但是,我会得到消息说源代码不同。 这是因为我在我的网络解决方案中仍然打开了类文件的旧“视图”,这是因为以下选项已被关闭

选项>环境>检测何时在环境外更改文件

关闭我的Web项目中的类文件解决了我的问题。 我现在正在改变这个选择。

希望这有助于某人。

上面的建议在运行unit testing时对我不起作用 – 我正在为整个解决方案执行干净和重建,但是DLL和PDB文件没有在〜\ UnitTests \ bin \ Debug目录中删除,所以我有要手动删除这些文件,然后右键单击UnitTests目录并选择“Build”。

请注意,在我的情况下,我使用Visual Studio 2013和更新3。

更新:

结束创建批处理文件以清理和构建我的解决方案,以便Visual Studio不会错误地离开某个项目而不重建它们:

 msbuild.exe "MyClassLibrary\MyClassLibrary.csproj" /t:Rebuild /p:Configuration=Debug msbuild.exe "UnitTests\UnitTests.csproj" /t:Rebuild /p:Configuration=Debug