我注意到GAC在我们的开发服务器和本地计算机上的奇怪行为。我签署了一个程序集,并使用MSI文件将其放入GAC。当我运行我的应用程序时,它会找到程序集并加载它并且应用程序运行正常。
作为测试,我决定从GAC中删除程序集并重新运行我的应用程序。奇怪的是,应用程序仍在运行,但没有告诉我无法找到程序集。
我确保程序集不在应用程序的bin文件夹中。我仔细检查了GAC,以确定它是否真的没有卸载。它确实卸载了,因为GAC文件夹中缺少程序集。除了名为c:\ Windows \ Assembly \ temp \ GPFPFRGYT的奇怪文件夹外,服务器上没有程序集的跟踪。那么,为什么当我清楚地看到它不再出现在GAC中时,我的应用程序仍然找到了该组件(我使用的是.NET 4.0,因此它位于C:\ Windows \ Microsoft.NET \ assembly中)。任何帮助,将不胜感激。感谢。
答案 0 :(得分:0)
我会删除dll的所有副本,包括你提到的临时文件中的那个。
使用以下内容始终值得取消GAC dll:
GacUtil -u YourDLLFileName
注意:在将以上命令与YourDLLFileName一起使用时,您不必使用扩展名.dll
我不是100%确定你需要这样做,但是一旦.dll被取消,我也会重启服务器。
我希望这会有所帮助