为什么ASP.NET加载了错误版本的Web应用程序程序集?

时间:2011-09-29 18:33:39

标签: asp.net visual-studio-2008 iis

我在Visual Studio 2008中有一个带有Web服务和几个Web表单的Web应用程序。当我尝试调试时,我的断点都不可用;如果我将鼠标移到他们身上,我会看到:

“断点不会被击中。源代码与原始版本不同。”

加载的调试模块列表包括我的程序集的旧版本1.0。*。我已经将其更改为1.1.0.0但该版本永远不会被加载。我尝试停止IIS并从Temporary ASP.NET Files中删除文件,但是当我重新启动它时,1.0。*版本就会回来!构建输出肯定是1.1.0.0而不是1.0。*,那么它可能来自何处?当我使用VS Development Server而不是IIS时,会发生同样的事情。

由于

3 个答案:

答案 0 :(得分:3)

我已经看到当DLL缓存在Temporary ASP.NET Files文件夹中时会发生这种情况。尝试执行“全部重建”,如果仍在进行,请从临时文件夹中删除DLL,或者完全清除文件夹内容。

答案 1 :(得分:0)

我有一个非常类似的问题:

  1. Web应用程序引用包含资源的程序集。
  2. 当使用非默认文化(其中一个资源构建到satellite * .resources.dll程序集中)时,一些资源可以使用,但有些资源会回归默认语言。
  3. 删除Temp ASP.NET文件或Clear \ Build没有帮助
  4. 问题是,您可以用于diag程序集加载问题的大多数工具(Process Explorer用于加载的程序集和路径列表,fuslogvw用于程序集绑定日志)根本不显示附属程序集。

    但最后我发现在我的网络应用程序bin文件夹中有旧版本的附属程序集(仍然不知道它是如何到达那里的)并且它在组装探测\加载期间获得优先权。 ..

答案 2 :(得分:0)

当文件LastWriteTime没有更新时,似乎触发了此操作。通过采用完全相同的LastWriteTime的两个完全独立的dll构建,并将它们一个接一个地部署到IIS中,我可以可靠地重现此代码。然后,如果我使用GNU touch更新文件LastWriteTime,则IIS会选择当前正确的版本。