为什么ASP.NET加载了错误版本的web应用程序集?
我在VisualStudio2008中有一个web应用程序,其中包含一个web服务和两个web表单。当我尝试调试时,我的断点都不可用;如果我将鼠标移到它们上面,我会看到: “不会命中断点。源代码与原始版本不同。” 加载的调试模块列表包括我的程序集的旧版本1.0.*。后来我将其更改为1.1.0.0,但从未加载该版本。我尝试停止IIS并从临时ASP.NET文件中删除这些文件,但当我重新启动它时,1.0.*版本立即恢复!构建输出肯定是1.1.0.0而不是1.0.*,那么它可能来自哪里呢?当我使用VS开发服务器而不是IIS时,也会发生同样的情况为什么ASP.NET加载了错误版本的web应用程序集?,asp.net,visual-studio-2008,iis,Asp.net,Visual Studio 2008,Iis,我在VisualStudio2008中有一个web应用程序,其中包含一个web服务和两个web表单。当我尝试调试时,我的断点都不可用;如果我将鼠标移到它们上面,我会看到: “不会命中断点。源代码与原始版本不同。” 加载的调试模块列表包括我的程序集的旧版本1.0.*。后来我将其更改为1.1.0.0,但从未加载该版本。我尝试停止IIS并从临时ASP.NET文件中删除这些文件,但当我重新启动它时,1.0.*版本立即恢复!构建输出肯定是1.1.0.0而不是1.0.*,那么它可能来自哪里呢?当我使用VS开
谢谢当DLL缓存在临时ASP.NET文件文件夹中时,我看到了这种情况。尝试执行“全部重建”,如果仍在进行,请从临时文件夹中删除DLL,或完全清除文件夹内容。我遇到了一个非常类似的问题:
但最后我发现在我的web应用程序bin文件夹中有一个旧版本的附属程序集(仍然不知道它是如何到达那里的),并且它在程序集探测\加载过程中获得了优先级…看起来这是在文件LastWriteTime未更新时触发的。通过使用完全相同的LastWriteTime构建两个完全独立的dll,并将它们一个接一个地部署到IIS中,我可以可靠地再现这一点。如果我随后使用GNU touch在LastWriteTime更新文件,IIS将获取当前的正确版本。您可能已经从GAC或项目源外部的其他位置引用了1.0程序集。在“引用”下的树中找到它并检查路径。不幸的是,这不起作用。我还尝试在IIS中删除并重新创建虚拟目录。您是否有过期的引用?没有,我只是对web服务进行了一些小的代码更改。尚未更改任何引用。是否使用web服务的web引用?这很奇怪:我在默认bin目录的根目录中找到了生成输出的副本,它是1.0.*版本。bin的根目录中不应该有构建输出,只在x86/Debug子目录中——不知道它是如何到达那里的。当我完全删除bin和obj目录,然后重新构建时,它工作了。谢谢