Net是一个新版本的代码,仍然使用以前的程序集
本文关键字:程序集 代码 一个 Net 新版本 | 更新日期: 2023-09-27 18:20:44
昨天,在大约两年后,我们重新部署了我们的应用程序。代码没有改变,但组成项目的结构已经被重新组织成更小的项目。一切似乎都很好,直到今天(下午5点29分),我们的一位用户指出了一个问题。从遇到的错误的性质来看,很明显,新部署的应用程序不是使用重新组织的解决方案中的新DLL,而是仍然使用旧DLL。我删除了仍在部署bin
文件夹中的旧DLL,并意识到这导致了应用程序崩溃,这一点得到了证实。
我已经删除了%WINDIR%/Microsoft.Net/Framework/v2.0/Temporary Internet Files
下的内容,但问题仍然存在。如果有人能解释这一点和/或提出一个永久可靠的解决方案,我将不胜感激。
我们已经看到3种不同的情况导致了这个确切的问题:
1) Internet临时文件中的缓存DLL。请记住,如果您已将应用程序升级到.Net 4,则此目录位于v4.0.30119子目录中。
2) IIS或用户浏览器中的缓存页面。将网站上的过期时间更改为立即(至少暂时)通常可以解决此问题。
3) 本应更新但未更新的DLL。这个问题有两类:
a) DLL上的版本没有更新,因此没有部署新版本。
b) 要部署的代码未由开发人员正确签入或在生成计算机上签出。
我们一直能够通过验证上述每一项来解决问题。
我也遇到了类似的问题。有时调试有效,有时则无效。我发现在Debug>Windows>Modules视图中加载了多个.dll(旧的和新的)。我发现我在同一个解决方案中有多个版本的.Net框架(.Net 4和4.5.1)
解决方案:已停止IIS,已清除两个.Net framework临时文件文件夹。清洗了溶液。将单个4.5.1项目更改回4并重新构建。现在我再也没有问题了。