我正在编写ADO.NET提供程序。为了调试我使用类DbProviderFactories.GetFactory方法。这个方法构造我继承的DbProviderFactory类,我用它来创建我的提供者的DbConnection继承者等。当我尝试在我的提供者代码中设置断点时,我播种它不起作用 - 执行没有停止。当我在我的代码中抛出异常时,VS2008显示了描述“源文件不同......”的消息框。 调试在前一天之前运行良好,但现在不是。有人知道“魔术复选框”来解决我的麻烦吗?有什么想法吗?
Update1 :提供商程序集正在构建后步骤中添加到GAC。编译器没有在解决方案中发现错误。 Update2 :静态引用程序集的源代码也是“不同的”。
Update3和最后:我发现了麻烦的来源。我使用x64版本的Windows 7.我的应用程序使用can't be loaded in x64 context的一些COM服务器(通常的本机x32 COM服务器)。所以我决定使用WOW将其作为x32 app运行,所以我将平台目标设置为x32。但是调试器开始显示诸如“源文件不同......”之类的消息。我不明白为什么它作为作品。我将写信给微软支持团队。
答案 0 :(得分:1)
您可以通过转到“工具”,“选项”,“调试器”部分以及取消选中Require source files to exactly match the original version
来告诉它忽略该问题。
要解决此问题,请检查装配位置。您的程序可能引用了提供程序DLL的不同版本而不是调试程序中的版本。尝试删除引用并添加项目引用。
编辑:尝试从GAC中删除提供程序(手动或在构建后步骤的开头)
答案 1 :(得分:1)
答案 2 :(得分:1)
如果您使用的是Visual Studio Express,则可能没有Build-> Clean Solution。
尝试删除位于C:\ Users \ yourusername \ Documents \ Visual Studio 2010 \ Projects \ yourproject \ yournamespace \ bin \ Debug中的pdb调试文件。
如果您害怕完全删除该文件,我会将其移至临时文件夹。
然后尝试调试 - >开始调试(F5)
快乐的编码!
答案 3 :(得分:0)
尝试清理(Build-> Clean Solution),然后重建All(Rebuild Solution)。