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. P>
Y a-t-il une solution pour cela? P>
Edit: Ce sera une solution temporaire uniquement pour les tests, quand ils vont RC, nous aurons un assemblage solide nommé. P>
4 Réponses :
Vous avez quelques options à ce moment-là. P>
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 . p>
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 . p>
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 em> 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. P>
Encore une autre solution consiste à ajouter ce qui suit au fichier machine.config: et ajouter devpath = chemin sur les variables d'environnement système. P> P>
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): 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
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.
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 P>
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. P >
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?