.net 服务器上奇怪的GAC行为

.net 服务器上奇怪的GAC行为,.net,.net,我注意到GAC在我们的开发服务器和本地机器上有一种奇怪的行为。我签署了一个程序集,并使用MSI文件将其放入GAC中。当我运行应用程序时,它会找到程序集并加载它,应用程序运行正常 作为测试,我决定从GAC中删除程序集并重新运行我的应用程序。奇怪的是,应用程序仍然在运行,却没有告诉我程序集找不到 我确保程序集不在应用程序的bin文件夹中。我仔细检查了GAC,确定它是否真的卸载了。它确实卸载了,因为GAC文件夹中缺少该程序集。除了在名为c:\Windows\assembly\temp\GPFPFRGY

我注意到GAC在我们的开发服务器和本地机器上有一种奇怪的行为。我签署了一个程序集,并使用MSI文件将其放入GAC中。当我运行应用程序时,它会找到程序集并加载它,应用程序运行正常

作为测试,我决定从GAC中删除程序集并重新运行我的应用程序。奇怪的是,应用程序仍然在运行,却没有告诉我程序集找不到


我确保程序集不在应用程序的bin文件夹中。我仔细检查了GAC,确定它是否真的卸载了。它确实卸载了,因为GAC文件夹中缺少该程序集。除了在名为c:\Windows\assembly\temp\GPFPFRGYT的奇怪文件夹中,服务器上没有程序集的跟踪。那么,当我清楚地看到程序集不再在GAC中时(我使用的是.NET 4.0,所以它在C:\Windows\Microsoft.NET\assembly中),为什么我的应用程序仍在查找该程序集呢。任何帮助都将不胜感激。谢谢。

我会删除dll的所有副本,包括您提到的临时文件中的副本

始终值得使用以下方法卸载GAC dll:

GacUtil-u你的文件名

注意:将上述命令与DllFileName一起使用时,不必使用扩展名.dll

我不是100%确定您需要这样做,但我也会在取消安装.dll后重新启动服务器


我希望这有帮助

一旦您使用windows安装程序在GAC中安装DLL,就无法使用gacutil.exe卸载它。它必须使用Windows安装程序卸载,我就是这么做的。其次,我没有重新启动服务器的选项。其他开发人员正在工作。