首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >继续使用旧的DLL文件

继续使用旧的DLL文件
EN

Stack Overflow用户
提问于 2011-04-07 10:26:02
回答 14查看 53.4K关注 0票数 67

我有一个看似随机的问题,我的项目将使用不再存在的旧版本的DLL文件运行。有时将使用真实版本的DLL文件,有时将使用旧版本的DLL文件。谁知道Visual Studio从哪里得到这个DLL文件-它已经过期了几个月了!

我知道它使用的是旧的DLL文件,因为当应用程序运行时,我开始得到奇怪的“TypeLoadExceptions”,抱怨方法不存在或没有实现。

以下操作有时会有帮助,有时不会:

本地设置重新启动Visual Studio

  • Restarting computer

  • Cleaning,重新生成solution

  • Deleting everything in \WINDOWS\Microsoft.NET\Framework\v4.0.30319\Temporary Files

  • Searching Settings\Temp

,并删除\Documents Studio

  • Restarting

  • \username\ ASP.NET Settings\Temp

中的

  • 文件实例

有时我执行上述所有步骤,但它仍然使用DLL文件的旧副本。它藏在哪里?!

同样的问题也存在于我们使用MSBuildTeamCity服务器上。当TeamCity尝试运行单元测试时,它使用旧的DLL文件。

现在,我知道我可以在web.config文件中使用程序集重定向,但是DLL文件的版本号并没有改变(我没有费心去更新它,所以它只停留在版本1)。我不想仅仅为了解决这个问题而开始对DLL文件进行版本控制。我只想知道我需要清除哪些特定的缓存,这样我才能继续开发。

EN

回答 14

Stack Overflow用户

回答已采纳

发布于 2011-09-09 07:22:53

它将其隐藏在GAC中。它可能会无限期地驻留在那里。使用较新的版本可能确实解决了这个问题,但Visual Studio中存在一个与选择正确版本的DLL文件有关的突出错误。(如果DLL Hell还不够糟糕,Visual Studio团队正在让它变得更糟!)

在GAC中找到它很棘手,我不能建议您如何做到这一点,但一旦从那里删除了旧版本,就不会再找到它。有时,即使您将编译器指向较新的版本(按日期),它也会使用较旧的版本,因为它具有相同的版本级别(按版本)。这就是它的bug。

票数 51
EN

Stack Overflow用户

发布于 2011-09-15 09:48:03

我也猜他们藏在GAC里。你可以在“C:\Windows\assembly”中查看所有的dll,然后从那里注销你的dll。

票数 5
EN

Stack Overflow用户

发布于 2017-03-01 18:51:38

我遇到了类似的问题(但没有Visual Studio)。我正在使用UnsafeLoadFrom加载一个.NET动态链接库。在一台计算机(终端服务器)上,旧文件仍然被使用,而不管更新的版本号等。

原因很简单:只要已经加载了旧dll的程序实例正在运行,新的dll就永远不会被使用。所有进一步的UnsafeLoadFrom都将成为旧的dll,尽管旧的版本不再存在于硬盘上,因为它已经加载了一段时间。

解决方案是关闭应用程序的所有正在运行的实例,甚至重新启动计算机。然后,所有新实例都将获得更新后的dll。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5575253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档