2013-02-22 92 views
1

我在開發服務器和本地計算機上發現GAC的奇怪行爲。我簽署了一個程序集,並使用MSI文件將其放入GAC。當我運行我的應用程序時,它發現程序集並加載它,並且應用程序運行正常。服務器上的奇怪GAC行爲

作爲測試,我決定從GAC中刪除程序集並重新運行我的應用程序。奇怪的是,應用程序仍然運行,但沒有告訴我該程序集無法找到。

我確保程序集不在應用程序的bin文件夾中。我仔細檢查了GAC,確定它是否沒有真正卸載。它真的卸載了,因爲GAC文件夾中沒有該程序集。除了名爲c:\ Windows \ Assembly \ temp \ GPFPFRGYT的奇怪文件夾外,服務器上沒有組件的跟蹤。那麼爲什麼當我清楚地看到它不再在GAC中時(我正在使用.NET 4.0,因此在C:\ Windows \ Microsoft.NET \程序集中),我的應用程序仍然在找到組件。任何幫助,將不勝感激。謝謝。

回答

0

我會刪除dll的所有副本,包括您提到的臨時文件中的副本。

它總是值得unistalling GAC dll的使用:

GACUTIL -u YourDLLFileName

注意:您不必使用擴展使用上述命令時.dll文件與YourDLLFileName

我不是100%確定您需要這樣做,但是我也會在.dll被卸載後重新啓動服務器。

我希望這有助於

+0

一旦你安裝使用Windows安裝程序在GAC一個DLL,您可以使用的Gacutil.exe無法卸載它。它必須使用Windows安裝程序進行卸載,這正是我所做的。其次,我沒有選擇重新啓動服務器。其他開發者正在工作。 – Ray 2013-02-23 14:28:25