2012-01-19 83 views
4

我在源代码中设置了断点,但它会让我警告源代码与原始代码不同。它不会命中breakpoint.Hit位置以允许更改源代码。任何人都可以解释我是否是问题?在Visual Studio 2010中调试源代码时给出的警告

+0

您是否使用AOP框架?即PostSharp? – MattDavey

+1

winform框架,但它再次被包装在我们自己的formframework中 –

+0

清理代码但仍存在问题构建模块时源文件不同。模块是dll文件。它问你是否希望调试器使用它?是或否? –

回答

4

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

解决方案重建解决方案。

解决方法:在断点检查的位置属性Allow source code to be different

2

执行构建 - >清理解决方案,然后构建 - >构建解决方案。然后再次尝试调试,确保活动配置是调试。

2

你的源代码是不一样的编译时间。您可以停止,清理并重建您的项目。

3

当编译&运行发布版本时,可能会发生这种情况。在发布版本的编译器,使可能更改或删除部分代码,借此例如优化:

static void Main() 
{ 
    int x = 10 + 5; // <---- BREAKPOINT HERE 

    Console.WriteLine("Foo"); 
} 

如果你编译&运行,在调试版本的代码,该断点被触发如常。在发布版本中,编译器会看到'x'从不使用,并且会“优化”整个行,这意味着断点永远不会被击中!

+0

+1很酷,清晰的示例以获得跨越 –

1

我有一个解决方案中的类库和另一个解决方案中的Web项目时出现此问题。在逐步浏览web解决方案中的代码时,它进入了我的类库。这导致在我的web解决方案中打开类库文件。

我在我的类库中更改了一些代码时发生了问题。正常情况下,我按照正确的顺序构建了两个项目。但是,我会收到消息说源代码是不同的。这是因为我的网络解决方案中的类文件仍旧打开,因为以下选项已关闭

选项>环境>检测时,文件被环境

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

希望这可以帮助别人。

0

以上建议在运行单元测试时不适用于我 - 我正在执行整个解决方案的清理和重建,但DLL和PDB文件没有在〜\ UnitTests \ bin \ Debug目录中被删除,所以我必须手动删除这些文件,然后右键单击UnitTests目录并选择“Build”。

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

UPDATE:

结束了创建一个批处理文件来清理并生成我的解决方案,以便Visual Studio不正确留有一定的项目,而不必重建他们:

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