2015-10-26 135 views
4

我試圖將包含Oracle ODP.NET庫的VS2013項目部署到Windows 2008 IIS服務器,並收到錯誤「無法加載類型'OracleInternal.Common。 ConfigBaseClass'from assembly'Oracle.ManagedDataAccess,Version = 4.121.2.0。'「從我在線上發現的情況來看,這是由於項目的ODP與GAC中具有ODP的服務器之間的衝突造成的。然後,說明從GAC中刪除ODP。服務器上的GAC中有Oracle DLL。我們99%確定DLL在GAC中的先前嘗試是在該盒子上設置Oracle,因爲該服務器上的其他項目不應該使用Oracle。所以我們應該安全地將其從GAC中移除。如何從服務器GAC中刪除.NET程序集DLL

但是,gacutil.exe僅在Visual Studio中可用,並且我們不允許將Visual Studio安裝到服務器上。

那麼,如果服務器上沒有gacutil.exe可用,我們如何從GAC中卸載Oracle DLL?我們可以從目錄中刪除它們嗎?或者我們是否需要將gacutil.exe從我的工作站複製到服務器以執行此操作?還是有另一種方法? (最好不涉及註冊表編輯)

任何意見讚賞,謝謝。

+0

相似 - https://stackoverflow.com/questions/45576596/removing-oracle-data-provider-for-net-from-global-assembly-cache – vapcguy

回答

4

如果您擁有管理員權限,您應該可以通過使用Windows界面進行如下操作。

  1. 導航到GAC,該GAC位於%systemdrive%\ Windows \ Assembly。

  2. 右鍵單擊包含在您的應用程序中每個組件文件,單擊卸載,然後單擊是確認

如果你無法通過,你可以訪問上面的方法卸載的dll GAC文件夾沒有特殊視圖,方法是打開運行命令並輸入下面的路徑並按回車。

C:\Windows\assembly\GAC_MSIL 

這將允許您作爲普通文件夾與GAC中的所有文件進行交互。

+0

好的真棒謝謝。他確實在該文件夾中有一個卸載選項,沒有意識到它會那麼簡單。所以它是可逆的,就像輕鬆?他已經將目標DLL複製到另一個文件夾。從GAC中卸載後,如果遇到一些無法預料的問題,可以將其拖放到GAC然後右鍵單擊安裝它們?不需要其他步驟?或者我們需要運行/重新運行Oracle ODP.NET安裝程序?如果沒有明確的恢復計劃,他很擔心如何將其從生產服務器上移除,這非常合理。謝謝。 – DaveCan

+0

@DaveCan你可以簡單地將一個dll拖放到Assembly文件夾中,然後安裝它,不需要右鍵單擊。像平常一樣需要管理員權限您可以按照步驟在本地計算機上測試進程。如果緊張,您可以隨時在生產服務器上嘗試其他dll。祝你好運。 –

+2

Windows 10:C:\ Windows \ Microsoft.Net \ assembly \ GAC_MSIL –

0

如果您在任何地方都有Visual Studio,則可以將gacutil從其位置移植到服務器上。在我的電腦上,使用Visual Studio 2015,它在C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools。在另一個關於SO的問題上,它說你也可以單獨安裝Microsoft SDK(如果它是不同的版本,它應該安裝在那裏,我假設,或者在不同的「v」文件夾中)。如果您知道它應該在特定的計算機上,則可以執行where gacutil來查找它,然後將它和應該在其旁邊的gacutil.exe.config文件複製到服務器。 (where is gacutil.exe?

有時,當您嘗試使用gacutil刪除從GAC Oracle.ManagedDataAccess你得到一個錯誤,Windows安裝程序是一個依賴( Unable to uninstall an Assembly from GAC?)。如果是這樣,你還必須從HKEY_CURRENT_USER\Software\Microsoft\Installer\Assemblies\Gl‌​obal & HKEY_LOCAL_MACHINE\Software\Classes\Installer\Assemblies\Glo‌​bal中刪除它,然後執行gacutil -u命令。我有這個問題,我不必去HKCU的位置 - 但它在HKLM的位置。從那裏刪除它之後,我卸載了&重新安裝了用於Visual Studio的Oracle開發工具,爲了安全起見(我在這裏看到它說這樣做:https://community.oracle.com/thread/3944905),然後我的項目終於工作了。

注意:當我嘗試去C:\Windows\assembly\GAC_MSIL時,我甚至從未見過Oracle。ManagedDataAccess,所以我不能這樣刪除它。我發佈這個來幫助任何可能遇到具有相同問題的頑固DLL的人。

相關問題