Global.asax.cs文件未重新编译 - 文件有效

时间:2010-10-14 16:58:00

标签: asp.net-mvc global-asax

我最近重构了一些代码,原始的Global.asax.cs文件所依赖的方法不再是静态的。当我更改我的Global.asax.cs代码以修复编译问题时,VisualStudio开发服务器仍在报告旧问题。为了让事情更加混乱,它报告了新源代码的旧问题。

当我启动开发服务器时,我得到了一个告诉错误屏幕:

找不到方法:'System.Security.Principal.IPrincipal Example.Records.AuthenticationManager.GetPrincipleForUserName(System.String);

这个原始的例外位于第54行 - 这对您,我或其他任何人都无关紧要。但是,它对Development Server很重要。无论我将代码更改为什么,甚至完全注释掉原始代码,我都会收到相同的错误消息。唯一的区别是它显示的代码片段。它目前指向评论栏。

因此,DevelopmentServer正在查看旧的编译代码,而VisualStudio正在查看新代码。我无法设置断点,因为VisualStudio告诉我源代码与原始版本不同。

如何强制DevelopmentServer查看有效的新代码?

1 个答案:

答案 0 :(得分:2)

我已经找到了发生这种情况的真正原因,当您尝试调试应用程序时,它也会影响“此类未加载的符号”问题。问题与DLL的路径有关。如果您的Web应用程序是更大解决方案的一部分,并且有人编辑了解决方案配置,则Visual Studio将更改构建输出路径。

默认情况下,Debug的构建输出路径位于〜\ bin \文件夹中。这样Cassini就可以找到DLL和PDB文件。当有人编辑主配置并更改架构时,VisualStudio会自动将目标输出目录更新为“〜\ bin {architecture} \ Debug”。您必须手动进入项目的属性并将输出目录设置为“bin”以再次进行调试。一旦你这样做,它将再次起作用。

---原文答案:

我唯一可以做的就是创建一个新项目并复制我的所有代码。这不是一个好的答案,但它是我能想到的最好的。同样精确的代码就像一个冠军。在逐行浏览项目文件后,我找不到任何可以解释我所看到的行为的内容。