J'ai un service Web XML de travail écrit dans ASP.NET. Maintenant, je dois référencer certaines assemblées situées dans un dossier spécifique. J'ai essayé de garder le Donc, ma question ici est:
Comment référencez-vous des assemblages qui ne se trouvent pas dans mon dossier BIN ou un sous-dossier en dessous? Dois-je modifier certains fichiers de stratégie de sécurité quelque part? Je pense que je ne suis pas la première personne à vouloir faire quelque chose comme ça. Donc, je suppose que quelqu'un a déjà résolu ce problème. P>
(j'ai essayé d'imiter un utilisateur administrateur dans le panneau de configuration IIS ASP.NET, mais cela n'a pas fonctionné non plus.) P>
Mise à jour: ne peut pas l'installer dans le GAC soit fort>. Pour donner une analogie, ce service Web donne une vue simplifiée sur une application tierce par exemple. Starteam. Je ne peux pas (je ne devrais pas avoir à ... ne veut pas ..) Copiez tous les fichiers binaires dans ce dossier dans le dossier BIN ou installez-le dans le GAC P> c: \ nomycode code>
Je ne veut pas strud> envie de copier / dupliquer des zillions de DLL dans ce dossier dans mon dossier BIN. P>
copylocal = false code> pour les assemblages référés dans le service Web. Cela s'est retrouvé dans une exception FilenotFoundfound pour l'Assemblée.
Lorsque je passe à
copylocal = true code>, les DLL référencées sont copiées sur le dossier bin .. et fonctionne. P>
5 Réponses :
Vous pouvez toujours mettre vos assemblages référencés dans le GAC, l'emplacement n'aurait pas d'importance. Vous pouvez installer le composant en le faisant glisser dans le GAC (C: \ Windows \ Assembly) ou en exécutant gacutil.exe. P>
Cet article peut aider. Il décrit le " meilleures pratiques pour le chargement de montage ." P >
Au début, je pensais que vous pouviez utiliser le
Vous pouvez mettre dans le GAC et y accéder à partir de là. P>
Bonne réponse? Ou mieux l'a supprimé?
Je pense que vous pouvez également faire référence à des chemins d'assemblage spécifiques dans le code.
AppDomain.CurrentDomain.AppendPrivatePath("C:\\NotMyCode");
APPENDPRIVATEPATH est obsolète, selon MSDN: MSDN.MicRosoft.com/ EN-US / Bibliothèque / ...
Cela devait être dans 3.5 .. je suis encore lourd 2.0 Malheureusement. Privébinpath alors .... même ...
Selon le Documentation MSDN , P>
Les assemblages référencés en dehors du répertoire racine de l'application doivent avoir des noms forts et doivent être installés dans le cache de montage global ou spécifié à l'aide de l'élément Alors, cela pourrait sembler que vous n'avez pas de chance. Voici ce que j'essayais: p>
Je suis assez curieux de voir si cela fonctionne: -) p>
linkd SharedCode C: \ NotMycode code>. Cela rend
c: \ nodmycode code>. Li>
SharedCode code>. Comme cela est sous votre base de candidature, cela devrait fonctionner. Alternativement, utilisez AppDomagneSetup.privatebinpath pour définir le chemin sondé pour les assemblages. li>
ol>
+1 pour snowiness .. ne savait pas à propos de Linadd. Il a réussi à tromper l'explorateur Windows mais pas ASP.NET. ASP.NET copie les fichiers binaires à un emplacement temporaire de l'endroit où il est exécuté. Ce qui est étrange, c'est que l'emplacement Temp affiche ces fichiers - Toutefois, FusionLogVW ne montre pas d'entrée pour une résolution de montage échouée. Mais le serveur répond avec un Filenotfound comme d'habitude ...
Nous pouvons désactiver l'encadrement de l'ombre au répertoire temporaire. Mais je n'aime pas la solution de jonction, c'est comme un piratage ... \
J'ai testé le sondage qui ne peut pas me faire wokks avec Web Developer Server - Server Jest renvoie une erreur interne ... Assembly Resolution Ne vous aide pas au serveur échoue pendant que STARUP
Vous pouvez toujours utiliser le:
AppDomain.CurrentDomaine.assemblyResolve Event
et appelez voir lien Pour plus d'informations. P> P>
J'ai le même problème et je ne trouve pas de solution! Avez-vous réussi à contourner cela? J'utilise .NET 3.5. Cela ressemble à un bug similaire à support.microsoft.com/kb/812832 .