1

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

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

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

4

1 回答 1

0

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

通过使用以下方法卸载 GAC dll 总是值得的:

GacUtil -u 你的DLL文件名

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

我不是 100% 确定您需要这样做,但是一旦卸载了 .dll,我也会重新启动服务器。

我希望这有帮助

于 2013-02-22T22:12:12.287 回答