Je suis désolé si ce sont des questions stupides, mais j'ai passé deux jours sur ce sujet et je n'arrive pas à le faire fonctionner. Voici ce que je l'ai fait:Impossible d'accéder à l'assembly installé dans le GAC
- Créer un nouveau projet de bibliothèque de classes
- Ajout d'une méthode simple
sayHi()
qui retourne une chaîne - Dans les propriétés projet vérifiés « signer l'assemblée » et utilisé un nom fort fichier clé
- l'application et Compilé copié la DLL à c: \ windows \ ensembles (et j'ai aussi essayé d'utiliser l'outil gacutil avec des résultats similaires)
- ajouté ce qui suit machine.config
<compilation><assemblies><add assembly="gacTestClass, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31418215e131202e" />
. Cela fonctionne très bien, car si je mal orthographe le nom de l'assembly, toute application .net échouera et se plaindre de cette ligne. - En utilisant le visualiseur de cache d'assembly dans l'outil de configuration de l'infrastructure .NET, je peux voir l'assembly dans le cache.
- Maintenant, lorsque j'essaie d'utiliser cela, mon application échoue lorsque je fais soit
using gacTestClass
ougacTestClass.gacTest.sayHi()
. J'ai une erreur indiquant que le type ou l'espace de noms n'a pas pu être trouvé.
Toute aide est appréciée.
EDIT:
Ok, j'ai suivi une suggestion et je vais essayer de faire ce travail avec web.config, plutôt que machine.config.
J'ai ajouté ce qui suit à mon web.config <compilation><assemblies><add assembly="gacTestClass, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31418215e131202e" />
et vérifié que cela fonctionne en mal orthographiant le nom et en voyant l'application échouer. Maintenant, lorsque j'essaie d'ajouter using gacTestClass
en haut de mon fichier .cs, j'obtiens une erreur indiquant que le type ou l'espace de noms est introuvable.
Juste au cas où, voici le code pour la gacTestClass la
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
[assmbly:AssemblyKeyFile("sayHi.snk")]
namespace gacTestClass {
public class gacTest {
public string sayHi() {
return "Hello there!";
}
}
}
Je pense que même si l'assemblage est dans GAC, vous devrez ajouter une référence. L'avantage est que l'assemblage n'a besoin d'être copié dans aucun dossier. –
Pouvez-vous copier/coller le message d'erreur particulier que vous obtenez? Si vous ajoutez l'assembly à machine.config ou à web.config, vous ne devez PAS ajouter de référence dans votre application. – sestocker
@sestocker: Si son application n'est pas ASP.Net, il le fera. – SLaks