De liaison d'Assembly de redirection ne fonctionne pas
Je suis en train de configurer un assembly de redirection de liaison, à l'aide de l'application suivante.config:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.AnalysisServices"
PublicKeyToken="89845dcd8080cc91" />
<bindingRedirect oldVersion="10.0.0.0"
newVersion="9.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Je suis l'exécution du programme sur un ordinateur avec la version 9.0.242.0 dans le GAC, avec le jeton de clé publique. Le CLR ne semble pas être à même d'essayer de rediriger la liaison à utiliser cette version si.
Voici ce que je reçois dans fuslogvw.exe:
LOG: This bind starts in default load context.
LOG: Using application configuration file: \Debug\AssemblyRedirectPOC.exe.Config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\machine.config.
LOG: Post-policy reference: Microsoft.AnalysisServices, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91
LOG: GAC Lookup was unsuccessful.
LOG: Attempting download of new URL /Debug/Microsoft.AnalysisServices.DLL.
LOG: Attempting download of new URL /Debug/Microsoft.AnalysisServices/Microsoft.AnalysisServices.DLL.
LOG: Attempting download of new URL /Debug/Microsoft.AnalysisServices.EXE.
LOG: Attempting download of new URL /Debug/Microsoft.AnalysisServices/Microsoft.AnalysisServices.EXE.
LOG: All probing URLs attempted and failed.
Quand j'ai essayé de mettre le 9.0.242.0 version de la dll dans la sonde de chemin, j'obtiens ceci à la place:
LOG: Assembly download was successful. Attempting setup of file: \Debug\Microsoft.AnalysisServices.dll
LOG: Entering run-from-source setup phase.
LOG: Assembly Name is: Microsoft.AnalysisServices, Version=9.0.242.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91
WRN: Comparing the assembly name resulted in the mismatch: Major Version
ERR: The assembly reference did not match the assembly definition found.
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.
Noter que j'ai aussi essayé de changer la redirection d'utiliser "9.0.242.0" au lieu de "9.0.0.0" dans l'app.config et cela ne fonctionne pas, bien que je ne pense pas qu'il devrait faire aucune différence.
De ce que je comprends le point de l'ensemble de la redirection de liaison est d'utiliser une version qui ne correspond pas à celui qui le programme a été construit avec. Suis-je complètement à côté de quelque chose ici? Est ce que je suis en train de faire est possible, et si oui, une idée de pourquoi ça ne marche pas?
Cheers,
Adam
Vous devez vous connecter pour publier un commentaire.
Toute faute de frappe dans la configuration xml peut être une cause. Le Loader ne peuvent pas voir votre configuration.
J'ai également eu une heure de maux de tête jusqu'à ce que je me rends compte que l'erreur était dans le caractère "=" au lieu de "-" dans le nom du schéma:
Juste vérifier soigneusement tous les noms d'attributs et de valeurs. Je suppose que "PublicKeyToken" doit être "publicKeyToken"
Cela devrait fonctionner:
xmlns="urn:schemas=microsoft-com:asm.v1"
résolu le problème pour moi. Merci!Assurez-vous que votre
<configuration>
tag a aucun espace de noms d'attribut. Autrement, une<assemblyBinding>
tag sera ignoré.Mal:
Droite:
(à partir de https://stackoverflow.com/a/12011221/150370)
web.config
était si vieux qu'il avait le 2.0 de l'espace de noms.J'ai rencontré de liaison d'assembly de redirection ne fonctionne pas, parce qu'il manque un espace de noms sur le assemblyBinding élément.
Corriger
Incorrect
Note manquant: xmlns="urn:schemas-microsoft-com:asm.v1"
dans mon cas, j'ai dû enlever le
de
Mon problème a été résolu quand j'ai déménagé de liaison de la redirection de la configuration de la machine.fichier de configuration.
J'ai eu le même problème en mouvement où les bindingredirects à la Machine.Config était la seule chose qui a fonctionné. Ce n'était pas la solution idéale dans mon application winform parce que je distribue mon appli pour les clients.
Solution:
Assurez-vous .fichier de configuration se trouve dans le répertoire où votre application est en cours d'exécution à partir de. par exemple, si votre Nom est "MyApp" puis Redirige devrait être dans "MyApp.exe.Config" fichier dans le répertoire de l'application.
J'ai eu à faire cela, même si le code qui utilise la troisième partie dll est en dll différent dans ma solution et en ajoutant .dll.config n'a pas aidé.
Excentrique stratégies de mot de passe peut aussi provoquer la assemblyBinding éléments dans la config pour être ignoré. Des personnages comme le '&' et '^' ont apparemment pas permis dans un fichier de config. Les outils XML dans Notepad++, révélée à moi, après quelques heures de jongler avec l'Assemblée de Liaison de la Visionneuse de Journaux.
Si vous installez Visual Studio 2017 sans le ASP.NET outils de développement de la partie, il se charge d'un projet web et de le compiler et de le construire. Il suffira de donner des avertissements sur le package NuGet versions car il ne sait pas quoi faire avec le web.le fichier de configuration et donc ne peut pas voir la liaison des redirections.
De fixation de l'installation fixe mon problème, mais il a fallu une éternité pour le comprendre.
Si c'est une aide à tout le monde, j'ai couru dans la ce parce que je n'ai pas mis la version complète pour nouvelleversion. c'est à dire, j'ai eu
newVersion="3.0.1"
au lieu denewVersion="3.0.1.0"
Vérifiez si l'erreur
La liaison explicite rediriger sur xxx , Culture=neutral, PublicKeyToken= xxx" est en conflit avec une générés automatiquement liaison rediriger
apparaît dans la fenêtre de sortie (elle n'apparaît pas dans la fenêtre d'erreur)
Merci beaucoup pour les réponses, surtout celle de la Pie-grièche. J'avais une application qui a travaillé dans le développement, mais pas dans la version déployée. Quand j'ai regardé de plus près, j'ai eu cette production, qui n'a PAS de match de développement:
dependentAssembly xmlns="" était le coupable. Dès que j'ai comparé la mine de votre réponse, et résolu, c'était le travail. Merci pour l'aide
Une autre solution pour ceux qui luttent aussi
S'assurer que chaque
<dependentAssembly>
n'a qu'un seul<assemblyIdentity>
et un<bindingRedirect>
. Dans mon scénario, j'ai eu deux en un, qui était à l'origine une cascade de défaillance de liaison multiple redirigeCela signifie qu'au lieu de mon
SimpleInjector
de liaison à 4.4.2.0 il était contraignant pour 5.2.3.0 qui a entraîné dans l'erreur me disant qu'il ne pouvait pas se lier Système.Web.Mvc correctement, masque la véritable question