繁体   English   中英

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

[英]Warning given when debugging source code in 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项目中的类文件解决了我的问题。 我正在改变这个选择。

希望这有助于某人。

上面的建议在运行单元测试时对我没有用 - 我正在为整个解决方案执行一个干净的重建,但是在〜\\ UnitTests \\ bin \\ Debug目录中没有删除DLL和PDB文件,所以我有手动删除这些文件,然后右键单击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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM