我有一个看似随机的问题,我的项目将使用不再存在的旧版本的DLL文件运行。有时将使用真实版本的DLL文件,有时将使用旧版本的DLL文件。谁知道Visual Studio从哪里得到这个DLL文件-它已经过期了几个月了!
我知道它使用的是旧的DLL文件,因为当应用程序运行时,我开始得到奇怪的“TypeLoadExceptions”,抱怨方法不存在或没有实现。
以下操作有时会有帮助,有时不会:
本地设置重新启动Visual Studio
,并删除\Documents Studio
中的
有时我执行上述所有步骤,但它仍然使用DLL文件的旧副本。它藏在哪里?!
同样的问题也存在于我们使用MSBuild的TeamCity服务器上。当TeamCity尝试运行单元测试时,它使用旧的DLL文件。
现在,我知道我可以在web.config
文件中使用程序集重定向,但是DLL文件的版本号并没有改变(我没有费心去更新它,所以它只停留在版本1)。我不想仅仅为了解决这个问题而开始对DLL文件进行版本控制。我只想知道我需要清除哪些特定的缓存,这样我才能继续开发。
发布于 2011-09-09 07:22:53
发布于 2011-09-15 09:48:03
我也猜他们藏在GAC里。你可以在“C:\Windows\assembly”中查看所有的dll,然后从那里注销你的dll。
发布于 2017-03-01 18:51:38
我遇到了类似的问题(但没有Visual Studio)。我正在使用UnsafeLoadFrom加载一个.NET动态链接库。在一台计算机(终端服务器)上,旧文件仍然被使用,而不管更新的版本号等。
原因很简单:只要已经加载了旧dll的程序实例正在运行,新的dll就永远不会被使用。所有进一步的UnsafeLoadFrom都将成为旧的dll,尽管旧的版本不再存在于硬盘上,因为它已经加载了一段时间。
解决方案是关闭应用程序的所有正在运行的实例,甚至重新启动计算机。然后,所有新实例都将获得更新后的dll。
https://stackoverflow.com/questions/5575253
复制相似问题