7
votes

Comment enregistrer un ensemble de noms non forts pour être chargé comme si c'était dans le GAC?

Un de nos partenaires nous a fourni une assemblée dont nous avons besoin pour accéder à notre application. Malheureusement, ce n'est pas un nom fort, nous ne pouvons donc pas l'installer au GAC. Et nous ne pouvons pas le placer au même endroit que notre exécutable.

Y a-t-il une solution pour cela?

Edit: Ce sera une solution temporaire uniquement pour les tests, quand ils vont RC, nous aurons un assemblage solide nommé.


3 commentaires

Par curiosité, pourquoi ne pouvez-vous pas le mettre au même endroit que votre exécutable?


Pas d'accès à la source que je suppose?


Je suis curieux aussi pourquoi il ne peut pas être placé dans le même répertoire. Existe-t-il une question de version de quelque sorte où il s'agit du même nom qu'une autre bibliothèque que vous devez utiliser?


4 Réponses :


5
votes

Vous avez quelques options à ce moment-là.

Le premier consiste à placer l'assemblage dans un répertoire contenant le Nom de l'assemblage (sans l'extension) qui est un sous-répertoire du répertoire d'applications .

La seconde consiste à spécifier le sous-répertoire souhaité que le CLR sonne à la sonde pour les références dans le fichier app.config à l'aide du élément de sondage .

Enfin, vous pouvez charger l'assemblage de manière dynamique à l'aide des divers Charger Méthodes sur la classe d'assemblage mais je dirais que c'est un très mauvaise idée dans ce cas, étant donné que vous avez l'Assemblée et que vous avez des types concrets que vous souhaitez utiliser. Le chargement de l'assemblage tardif de celui-ci est généralement utilisé lorsque vous souhaitez sous-traiter la mise en œuvre de certaines abstractions, ce qui ne semble pas être le cas ici.


0 commentaires

1
votes

Encore une autre solution consiste à ajouter ce qui suit au fichier machine.config: xxx

et ajouter devpath = chemin sur les variables d'environnement système.


0 commentaires

5
votes

Solution de contournement à l'aide de la décompilation et de la signature (à l'aide de l'invite de commande de développeur pour Visual Studio): XXX PRE>

DataSystem.snk peut être généré comme fichier à l'aide de Visual Studio IDE http: //www.bloggedbychris. COM / 2011/09/29 / Signature-A-Net-Assembly-in-Visual-Studio / P>

Ensuite, vous devriez pouvoir exécuter P>

gacutil.exe -i DataSystem.dll


2 commentaires

Dans mon cas, je ne peux pas faire cela parce qu'un assemblage fait référence à un autre qui n'a pas de nom fort.


Merci, evalds. Enregistré mon %%%%. Je devais obtenir une DLL intégrée à une tâche de script SSIS, mais le fournisseur n'a pas été expédié avec une DLL de nom fort. Votre tour a fait le travail.



0
votes

La solution la mieux et la plus simple et la plus simple pour signer et enregistrer une assemblée que j'ai trouvée était ici: HTTP: // CODEINGADITION. blogspot.com/2011/06/how-toaadd-strong-name-a-existing-dll_16.html

Pour moi pour que cela fonctionne facilement, je cède à un répertoire comme C: \ Temp - cela semblait fonctionner beaucoup mieux pour moi, probablement à cause des autorisations de fichier plus accessibles dans quelque part.


0 commentaires