Как удалить библиотеки DLL сборки .NET из GAC сервера

Я пытаюсь развернуть проект VS2013, содержащий библиотеку Oracle ODP.NET, на сервере IIS Windows 2008 и получаю сообщение об ошибке «Не удалось загрузить тип OracleInternal.Common.ConfigBaseClass из сборки Oracle.ManagedDataAccess. , Version = 4.121.2.0. ‘»Из того, что я нашел в Интернете, это вызвано конфликтом между ODP проекта и сервером, имеющим ODP в GAC. Затем даны инструкции по удалению ODP из GAC. В GAC на сервере есть библиотеки DLL Oracle. Мы на 99% уверены, что библиотеки DLL оказались в GAC из-за предыдущей попытки установить Oracle на этом сервере некоторое время назад, поскольку никакие другие проекты на этом сервере не должны использовать Oracle. Поэтому мы должны безопасно удалить его из GAC.

Однако gacutil.exe доступен только в Visual Studio, и нам не разрешено устанавливать Visual Studio на сервер.

Итак, как нам удалить библиотеки DLL Oracle из GAC, не имея gacutil.exe на сервере? Можем ли мы просто удалить их из каталога? Или нам нужно скопировать gacutil.exe с моей рабочей станции на сервер, чтобы сделать это? Или есть другой подход? (желательно без редактирования реестра)

Любые советы приветствуются, спасибо.


Вы должны иметь возможность сделать это из интерфейса Windows следующим образом предоставляя вам права администратора.

  1. Перейдите в GAC, который находится в% systemdrive% Windows Assembly.

  2. Щелкните правой кнопкой мыши каждый файл сборки, включенный в ваше приложение, выберите «Удалить», а затем нажмите «Да» для подтверждения

Если вы не можете удалить библиотеки DLL с помощью вышеуказанного метода, вы можете получить доступ к папке GAC без специального представления, открыв команду запуска, введя путь ниже и нажав Enter.

  C  :  Windows  assembly  GAC_MSIL  

Это позволит вам взаимодействовать со всеми файлами в GAC как с обычной папкой.


Если у вас есть 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 это должно быть рядом с сервером. (где gacutil.exe?)

Иногда вы получаете сообщение об ошибке при попытке удалить Oracle.ManagedDataAccess из GAC с помощью gacutil , что установщик Windows является зависимостью (невозможно удалить сборку из GAC?). Если это так, вам также необходимо удалить его из HKEY_CURRENT_USER Software Microsoft Installer Assemblies Gl‌ obal и HKEY_LOCAL_MACHINE Software Classes Installer Assemblies Glo‌ bal , затем выполните команду gacutil -u . У меня была эта проблема, и мне не нужно было идти в местоположение HKCU, но оно было в местоположении HKLM. Удалив его оттуда, я удалил и повторно установил Oracle Developer Tools для Visual Studio, на всякий случай (я видел, как это было сказано здесь: https://community.oracle.com/thread/3944905), затем мой проект наконец заработал.

Примечание: когда я пытался перейти в C: Windows assembly GAC_MSIL , я даже не видел Oracle.ManagedDataAccess, поэтому я не мог удалить его таким образом . Я публикую это, чтобы помочь всем, кто может столкнуться с упрямыми библиотеками DLL, имеющими ту же проблему.


Если у вас вообще есть 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 это должно быть рядом с сервером. (где gacutil.exe?)

Иногда вы получаете сообщение об ошибке при попытке удалить Oracle.ManagedDataAccess из GAC с помощью gacutil , что установщик Windows является зависимостью (невозможно удалить сборку из GAC?). Если это так, вам также необходимо удалить его из HKEY_CURRENT_USER Software Microsoft Installer Assemblies Gl‌ obal и HKEY_LOCAL_MACHINE Software Classes Installer Assemblies Glo‌ bal , затем выполните команду gacutil -u . У меня была эта проблема, и мне не нужно было ехать в местоположение HKCU, но оно было в местоположении HKLM. Удалив его оттуда, я удалил и повторно установил Oracle Developer Tools для Visual Studio, на всякий случай (я видел, как это было сказано здесь: https://community.oracle.com/thread/3944905), затем мой проект наконец заработал.

Примечание: когда я пытался перейти в C: Windows assembly GAC_MSIL , я даже не видел Oracle.ManagedDataAccess, поэтому я не мог удалить его таким образом . Я публикую это, чтобы помочь всем, кто может столкнуться с упрямыми библиотеками DLL, имеющими ту же проблему.

Оцените статью
techsly.ru
Добавить комментарий