2010-06-23 9 views
13

J'essaie d'ajouter un .NET 4.0 .dll au GAC. Je tente de le faire parce qu'il est publié par une société tierce à la fois comme un 32 et 64 bits .dll que je dois utiliser à partir de différentes applications sur différentes plates-formes dans les deux formats. En tout cas, j'ai de la difficulté à enregistrer cette DLL dans le GAC sur un environnement Windows Server 2008.Problème lors de l'enregistrement de ChilkatDotNet4.dll sur le GAC

J'ai essayé de copier gacutil.exe (et le fichier de support) trouvé dans "Outils C: \ Program (x86) \ Microsoft SDKs \ Windows \ v7.0A \ bin \ NETFX 4.0" sur ma machine locale à la " C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 "dossier sur le serveur de production cible par les suggestions trouvées here. J'ai ensuite essayé de les copier dans "C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319".

L'exécution à partir des deux emplacements a indiqué une installation réussie. Et en effet, l'inscription réussie apparaît:

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

Toutefois, l'exécution d'une application de la console qui fait référence à la version (64 bits) des erreurs dll avec le message suivant:

System.IO.FileNotFoundException: n'a pas pu charger le fichier ou l'assemblage 'ChilkatDotNet4.dll' ou l'une de ses dépendances . Le module spécifié n'a pas pu être trouvé. Nom du fichier:. « ChilkatDotNet4.dll »

Alors, je l'ai maintenant créé manuellement les entrées GAC suivantes à l'aide mkdir et copier à partir d'une invite de commande (qui peut ou peut ne pas fonctionner en fait je n'ai aucune idée ce qui est si spécial à propos gacutil.exe):

  • C: \ Windows \ Microsoft.NET \ assembly \ GAC_MSIL \ ChilkatDotNet4 \ v4.0_9.0.8.0__eb5fc1fc52ef09bd \ ChilkatDotNet4.dll (en utilisant la version 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

Après chaque "installation" de la dll, j'ai testé et a reçu la même erreur. Toutes les idées sont les bienvenues


EDIT: la question GAC ne peut pas réellement être au-dessus du coupable. Il s'avère que, même lorsque je crée un tout nouveau projet Console App et que j'ajoute directement le fichier .dll (pour qu'il reste dans la corbeille), je ne peux toujours pas l'exécuter sur le serveur. En outre, j'ai noté que les applications de console sont créées en ciblant le profil client .NET 4.0 plutôt que le .NET Framework 4. Lorsque j'essaie de l'exécuter en ciblant le profil client, aucune des bibliothèques System.Web * n'est disponible . Cependant, j'ai essayé d'exécuter un application de test très simple ciblant les deux et ne fonctionnerait pas sur le serveur tout en référençant le mauvais .dll.

Existe-t-il un type spécial d'installation pour exécuter les applications console .NET 4.0?

+1

+1 Merci! –

Répondre

34

Pour toute autre personne qui pourrait avoir des problèmes avec cela dans le futur. Ce n'était pas un problème généralisé avec la façon dont j'inscris la DLL au GAC ou comment je me référais à cela à partir de mes projets.

ChilkatDotNet4.dll (et les autres versions j'en suis sûr) a été construit en Visual C++. Ainsi, le serveur sur lequel il est déployé doit avoir le Visual C++ Runtime installé pour l'architecture de processeur appropriée.

Pour 2010 (.NET 4.0):

Si vous utilisez une application x86 sur une plate-forme 64 bits. Assurez-vous de marquer le pool d'applications avec "Activer les applications 32 bits" = true.

+2

Un grand merci pour cela - sauvé mon bacon aujourd'hui :) – fritterfatboy

+2

Merci pour la réponse. J'utilisais chillkatDotNet4.dll 64 bits sur Windows 2008 R2 x64 comme Frangiskos. J'ai d'abord installé Visual BasiC++ Runtimes x64. J'ai vérifié le site mais j'ai vu la même erreur encore. J'ai changé le x64 dll de Chilkat avec x86 et également installé la version x86 de Runtime de Visual C++. Et définissez la propriété «Activer les applications 32 bits» sur Pools d'applications sur True. Ensuite, tout a fonctionné parfaitement. – CemilF

+1

Mon cas était très similaire avec vous les gars: j'ai utilisé x86 Chilkat lib, Publié dans Tout processeur. Mes serveurs étaient x64 mais l'installation de C++ x86 et l'activation de 'Activer les applications 32 bits' ont fait l'affaire! –