2010-06-23 3 views
13

Я пытаюсь добавить .NET 4.0 .dll в GAC. Я пытаюсь сделать это, потому что он публикуется сторонней компанией как 32 и 64-разрядные .dll, которые я должен использовать из разных приложений на разных платформах в обоих форматах.Ошибка регистрации ChilkatDotNet4.dll в GAC

Во всяком случае, у меня возникла проблема с регистрацией этой DLL в GAC в среде Windows Server 2008.

Я попытался скопировать gacutil.exe (и поддерживающий файл) в папку «C: \ Program Files (x86) \ Microsoft SDK \ Windows \ v7.0A \ bin \ NETFX 4.0» на моей локальной машине в папку " C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 "на целевом производственном сервере по найденным предложениям here.

Затем я попытался скопировать их в папку «C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319».

Выполняется с обоих мест, указав успешную установку. И действительно, регистрация появляется успешно:

  • C: \ Windows \ Microsoft.NET \ сборка \ GAC_64 \ ChilkatDotNet4 \ v4.0_9.0.8.0__eb5fc1fc52ef09bd \ ChilkatDotNet4.dll
  • C: \ Windows \ Microsoft. NET \ сборка \ GAC_32 \ ChilkatDotNet4 \ v4.0_9.0.8.0__eb5fc1fc52ef09bd \ ChilkatDotNet4.dll

Однако запуск консольного приложения, которое ссылается на (64-бит) версии DLL ошибок с следующим сообщением:

System.IO.FileNotFoundException: Может ли загрузить файл или сборку 'ChilkatDotNet4.dll' или одну из его зависимостей . Указанный модуль не найден. Имя файла:. «ChilkatDotNet4.dll»

Итак, я теперь вручную созданы следующие записи GAC с помощью MKDIR и скопировать из командной строки (которые могут или не могут реально работать, я не имею понятия, что не так особенного Gacutil.exe):

  • C: \ Windows \ Microsoft.NET \ сборка \ GAC_MSIL \ ChilkatDotNet4 \ v4.0_9.0.8.0__eb5fc1fc52ef09bd \ ChilkatDotNet4.dll (с использованием 64-битной версии в DLL)
  • C: \ Windows \ assembly \ GAC_64 \ ChilkatDotNet4 \ v4.0_9.0.8.0__eb5fc1fc52ef09bd \ ChilkatDotNet4.dll
  • C: \ Windows \ сборка \ GAC_32 \ ChilkatDotNet4 \ v4.0_9.0.8.0__eb5fc1fc52ef09bd \ ChilkatDotNet4.dll

После каждого "установить" в DLL, я проверил и получил ту же ошибку. Любые идеи приветствуются!


EDIT: вопрос GAC выше, не может быть на самом деле преступник. Оказывается, даже когда я создаю новый проект Console App и добавляю .dll напрямую (чтобы он жил в корзине), я все еще не могу запустить его на сервере. Кроме того, я заметил, что приложения Консоли создаются с таргетингом на клиентский профиль .NET 4.0, а не .NET Framework 4. Когда я пытаюсь запустить его для таргетинга на профиль клиента, похоже, что ни одна из библиотек System.Web * не доступна , Тем не менее, я попытался запустить очень простое тестовое приложение для тестирования, и оба они не будут работать на сервере, ссылаясь на плохую .dll.

Существует ли особый вид установки для запуска приложений консоли .NET 4.0?

+1

+1 Спасибо! –

ответ

34

Для всех, у кого могут возникнуть проблемы с этим в будущем. Это не была обобщенная проблема с тем, как я регистрировал dll в GAC или как я ссылался на нее из своих проектов.

ChilkatDotNet4.dll (и другие версии, я уверен) был построен в Visual C++. Таким образом, сервер, на котором он развертывается, должен иметь Visual C++ Runtime для соответствующей архитектуры процессора.

В 2010 году (.NET 4.0):

Если вы запускаете приложение x86 на 64-битной платформе. Обязательно отметьте пул приложений «Включить 32-разрядные приложения» = true.

+2

Большое спасибо за это - спас мой бекон сегодня :) – fritterfatboy

+2

Спасибо за ответ. Я использовал chillkatDotNet4.dll 64bit на Windows 2008 R2 x64, как Frangiskos. Сначала я установил Visual C++ Runtimes x64. Я проверил сайт, но снова увидел ту же ошибку. Я изменил x64 dll Chilkat на x86, а также установил x86 версию Visual C++ Runtimes. И установите для «Пул приложений» свойство «Включить 32-разрядные приложения» значение «Истина». Тогда все сработало отлично. – CemilF

+1

Мое дело было очень похоже на вас, ребята: я использовал x86 Chilkat lib, Опубликовано в любой процессор. Мои серверы были x64, но установка C++ x86 и включение «Включить 32-разрядные приложения» сделали трюк! –

Смежные вопросы