Проблемы с регистрацией ChilkatDotNet4.dll в GAC - PullRequest
13 голосов
/ 23 июня 2010

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

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

Я попытался скопировать файл gacutil.exe (и вспомогательный файл), находящийся по адресу "C: \ Program Files (x86) \ Microsoft SDKs \ 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, описанная выше, на самом деле не может быть виновником. Оказывается, даже когда я создаю совершенно новый проект консольного приложения и напрямую добавляю .dll (чтобы он находился в корзине), я все равно не могу запустить его на сервере. Кроме того, я отметил, что консольные приложения создаются для профиля клиента .NET 4.0, а не для .NET Framework 4. Когда я пытаюсь запустить его для профиля клиента, оказывается, что ни одна из библиотек System.Web * недоступна , Однако я попытался запустить очень простое тестовое приложение, нацеленное на оба, и ни одно из них не запустилось бы на сервере, ссылаясь на плохой .dll.

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

1 Ответ

35 голосов
/ 30 июня 2010

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

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

Для 2010 (.NET 4.0):

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

...