Ошибка регистрации ChilkatDotNet4.dll в GAC

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

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

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

Затем я попытался скопировать их в папку "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\assembly\GAC_MSIL\ChilkatDotNet4\v4.0_9.0.8.0__eb5fc1fc52ef09bd\ChilkatDotNet4.dll(с использованием 64-разрядной версии dll)
  • C:\Windows\сборка\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 я тестировал и получал ту же ошибку. Любые идеи приветствуются!


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

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

Ответы

Ответ 1

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

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

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

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