2010-06-23 154 views
13

Estoy tratando de agregar un .dll 4.0 .dll al GAC. Estoy intentando hacer esto porque es publicado por una empresa de terceros como un .dll de 32 y 64 bits que debo usar desde diferentes aplicaciones en diferentes plataformas en ambos formatos.Problema al registrar ChilkatDotNet4.dll en el GAC

En cualquier caso, tengo problemas para registrar este dll en el GAC en un entorno de Windows Server 2008.

He intentado copiar gacutil.exe (y archivo de apoyo) que se encuentra en "C: \ Archivos de programa (x86) \ Microsoft SDKs \ Windows \ v7.0A \ bin \ NETFX 4.0 Tools" en mi máquina local al " Carpeta C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 "en el servidor de producción de destino según las sugerencias encontradas here.

Intenté copiarlos en "C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319".

La ejecución desde ambas ubicaciones indica que la instalación fue exitosa. Y de hecho, el registro aparece con éxito:

  • C: \ Windows \ Microsoft.NET \ assembly \ GAC_64 \ ChilkatDotNet4 \ v4.0_9.0.8.0__eb5fc1fc52ef09bd \ ChilkatDotNet4.dll
  • C: \ Windows \ Microsoft. \ assembly NET \ GAC_32 \ ChilkatDotNet4 \ v4.0_9.0.8.0__eb5fc1fc52ef09bd \ ChilkatDotNet4.dll

Sin embargo, ejecutar una aplicación de consola que se refiere a la (64 bits) versión de los errores de DLL a cabo con el siguiente mensaje:

System.IO.FileNotFoundException: podría no cargar el archivo o ensamblado 'ChilkatDotNet4.dll' o una de sus dependencias . No se pudo encontrar el módulo especificado . Nombre del archivo:. 'ChilkatDotNet4.dll'

Por lo tanto, he creado ahora manualmente las siguientes entradas del GAC utilizando mkdir y copiar desde un símbolo del sistema (que puede o no puede trabajar realmente no tengo idea de lo que es tan especial sobre gacutil.exe):

  • C: \ Windows \ Microsoft.NET \ assembly \ GAC_MSIL \ ChilkatDotNet4 \ v4.0_9.0.8.0__eb5fc1fc52ef09bd \ ChilkatDotNet4.dll (utilizando la versión de 64 bits de la DLL)
  • C: \ Windows \ assembly \ GAC_64 \ ChilkatDotNet4 \ v4.0_9.0.8.0__eb5fc1fc52ef09bd \ ChilkatDotNet4.dll
  • C: \ Windows \ assembly \ GAC_32 \ ChilkatDotNet4 \ v4.0_9.0.8.0__eb5fc1fc52ef09bd \ ChilkatDotNet4.dll

Después de cada "instalar" de la DLL, I probado y recibió el mismo error. Cualquier idea bienvenida!


EDITAR: el tema GAC ​​anterior puede ser en realidad el culpable. Resulta que, incluso cuando creo un nuevo proyecto de aplicación de consola y agrego el .dll directamente (para que viva en el contenedor), todavía no puedo ejecutarlo en el servidor. Además, he notado que las aplicaciones de la consola se crean con el perfil de cliente de .NET 4.0 en lugar de .NET Framework 4. Cuando intento ejecutarlo como objetivo del perfil del cliente, parece que ninguna de las bibliotecas de System.Web * está disponible . Sin embargo, traté de ejecutar una muy simple aplicación de prueba dirigida a ambos y ninguno se ejecutaría en el servidor al hacer referencia al .dll incorrecto.

¿Hay un tipo especial de instalación que se iba a producir para ejecutar .NET 4.0 Console Apps?

+1

+1 ¡Gracias! –

Respuesta

34

Para cualquier otra persona que pueda tener problemas con esto en el futuro. No era un problema generalizado con la forma en que estaba registrando el dll en el GAC o cómo me refería a él desde mis proyectos.

ChilkatDotNet4.dll (y las otras versiones estoy seguro) fue construido en Visual C++. Por lo tanto, el servidor en el que se implementa debe tener instalado Visual C++ Runtime para la arquitectura de procesador adecuada.

Para el año 2010 (.NET 4.0):

Si está ejecutando una aplicación en una plataforma x86 de 64 bits. Asegúrese de marcar el grupo de aplicaciones con "Habilitar aplicaciones de 32 bits" = verdadero.

+2

Muchas gracias por esto - salvó mi tocino hoy :) – fritterfatboy

+2

Gracias por la respuesta. Estaba usando chillkatDotNet4.dll 64 bits en Windows 2008 R2 x64 como Frangiskos. Instalé Visual C++ Runtimes x64 primero. Revisé el sitio web pero volví a ver el mismo error. Cambié el x64 dll de Chilkat con x86 y también instalé la versión x86 de Visual C++ Runtimes. Y establezca la propiedad "Habilitar aplicaciones de 32 bits" de Pools de aplicaciones en True. Entonces todo funcionó perfecto. – CemilF

+1

Mi caso fue muy similar con ustedes: utilicé x86 Chilkat lib, publicado en Any CPU. Mis servidores eran x64, pero la instalación de C++ x86 y la habilitación de "Habilitar aplicaciones de 32 bits" hicieron el truco. –

Cuestiones relacionadas