【问题标题】:Strange GAC behavior on server服务器上奇怪的 GAC 行为
【发布时间】:2013-02-23 06:12:12
【问题描述】:

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

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

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

【问题讨论】:

    标签: .net


    【解决方案1】:

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

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

    GacUtil -u 你的DLL文件名

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

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

    希望对你有帮助

    【讨论】:

    • 一旦您使用 Windows 安装程序在 GAC 中安装了 DLL,您将无法使用 gacutil.exe 卸载它。它必须使用 Windows Installer 卸载,这就是我所做的。其次,我没有重新启动服务器的选项。其他开发人员正在工作。
    猜你喜欢
    • 2012-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-04
    • 2021-10-01
    • 2014-04-24
    相关资源
    最近更新 更多