DLL需要上载两次才能使更改生效

时间:2009-04-24 11:35:00

标签: .net dll

我在本地开发机器上运行.NET 1.1 Web应用程序,并且实时版本在运行.NET 2.0的托管Web服务器上运行(一切运行正常)。

我的实时服务器在我的本地开发机器上有一个项目镜像。当我重新构建项目/解决方案并将新DLL上传到实时服务器时,我所做的更改不会在第一次上传时生效。

我发现我必须

  1. 在开发机器上构建项目
  2. 导航到Dev机器上的主页,以便DLL重新编译
  3. 将新DLL上传到实时服务器
  4. 导航到实时服务器上的主页,以便DLL重新编译
  5. 然后重复步骤2,3&再次4,这一次的变化已经生效。

    为什么会发生这种情况的任何想法,因为它使我的部署过程比它必须的时间长得多并且非常令人沮丧,有时我甚至不得不这样做三次!

    非常感谢帮助。

    注意:我在使用Firefox 3.0.9浏览的XP2 Windows机器上运行Studio .NET 2003。

3 个答案:

答案 0 :(得分:1)

如果您具有远程桌面功能,则可以尝试步骤1-4并回收应用程序池,看看是否确实解决了问题

答案 1 :(得分:0)

虽然我不明白为什么编译的DLL会被ASP.NET“重新编译”(它应该只是被加载),但这里有一些可以考虑的事项(我会在考虑这个时添加更多):

  1. 通过浏览器进行缓存。在Firefox中,如果你有“Webdeveloper插件”,你可以保持关闭缓存。

  2. ASP.NET临时文件文件夹中DLL的卷影副本已损坏。要解决此问题,请参阅my answer to this question

答案 2 :(得分:0)

检查perfmon计数器是否有重新编译。除非您是NGEN,否则在网站上删除新DLL会导致页面被重新编译。 web.config中有一个设置,用于标记它们是批量编译还是一次编译。在任何一种情况下,删除新的DLL都会触发重新编译页面。

这里有一些不止一次咬我的东西 - 我做了一个改变,放弃它,然后点击了网站。我没有看到我的更改的影响,所以我做了其他事情来“修复它”,然后刷新我的浏览器窗口。现在我看到了变化!这种变化始终存在,正是刷新“导致它”出现。