La redirection de liaison d’assemblage ne fonctionne pas

J’essaie de configurer une redirection de liaison d’assembly à l’aide du fichier app.config suivant:

          

J’exécute le programme sur une machine avec la version 9.0.242.0 du GAC, avec le jeton de clé publique spécifié. Le CLR ne semble même pas essayer de redirect la liaison pour utiliser cette version.

Voici ce que je trouve 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 la version 9.0.242.0 dll dans le chemin de la sonde, je reçois plutôt ceci:

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.

Notez que j’ai également essayé de changer la redirection pour utiliser “9.0.242.0” au lieu de “9.0.0.0” dans app.config et cela n’a pas fonctionné, bien que je ne pense pas que cela devrait faire une différence.

De ce que je comprends, l’intérêt de redirect une liaison est d’utiliser une version qui ne correspond pas à celle avec laquelle le programme a été construit. Est-ce que je manque complètement quelque chose ici? Est-ce que ce que j’essaie de faire est possible et, le cas échéant, pourquoi ne fonctionne-t-il pas?

À la vôtre, Adam

Toute faute de frappe dans la configuration XML peut être une cause. Loader ne peut tout simplement pas voir votre configuration. J’ai également eu une heure de maux de tête jusqu’à ce que je réalise que l’erreur était dans le caractère “=” au lieu de “-” dans le nom du schéma:

  

Il suffit de vérifier attentivement tous les noms et valeurs d’atsortingbuts. Je suppose que “PublicKeyToken” devrait être “publicKeyToken”

Cela devrait fonctionner:

           

J’ai rencontré liaison redirect do en raison d’un espace de nom manquant sur l’élément assemblyBinding.

Correct

      

Incorrect

Remarque manquant: xmlns = “urn: schemas-microsoft-com: asm.v1”

      

Assurez-vous que votre n’a pas d’atsortingbut d’espace de nom . Sinon, toute sera ignorée.

Faux:

  

Droite:

  

(à partir de https://stackoverflow.com/a/12011221/150370 )

dans mon cas, je devais enlever le

 appliesTo="v2.0.05727" 

de

  

Mon problème a été résolu lorsque j’ai déplacé la configuration de redirection de liaison dans le fichier machine.config.

J’ai eu un problème similaire où le déplacement de bindingredirects vers Machine.Config était la seule chose qui fonctionnait. Ce n’était pas la solution idéale dans mon application winform, car je dissortingbue mon application aux clients.

Solution:

Assurez-vous que le fichier .config se trouve dans le répertoire où votre application est exécutée. Par exemple, si votre AppName est “MyApp”, les redirections doivent figurer dans le fichier “MyApp.exe.Config” du répertoire de l’application.

Je devais le faire même si le code qui utilise des dll tierces se trouve dans différentes dll de ma solution et que l’ajout de .dll.config n’a pas aidé.

Les politiques de mot de passe excensortingques peuvent également entraîner l’ignorance des éléments assemblyBinding de la configuration. Des caractères tels que ‘&’ et ‘^’ ne sont apparemment pas autorisés dans un fichier de configuration. Les outils XML de Notepad ++ me l’ont révélé après quelques heures de manipulation avec la visionneuse du journal d’assemblage.

Si cela peut aider quelqu’un, je me suis heurté à cette erreur car je n’ai pas mis la version complète dans newVersion. c’est-à-dire que j’avais newVersion="3.0.1" au lieu de newVersion="3.0.1.0"

Vérifiez si l’erreur La redirection de liaison explicite sur xxx, Culture = neutre, PublicKeyToken = xxx “est en conflit avec une redirection de liaison générée automatiquement

apparaît dans la fenêtre de sortie (il n’apparaîtra pas dans la fenêtre d’erreur)

Merci beaucoup pour les réponses, en particulier celle de Shrike. J’avais une application qui fonctionnait en développement, mais pas dans la version déployée. Lorsque j’ai regardé de plus près, j’ai eu ceci en production, ce qui ne correspond pas au développement:

          

dependAssembly xmlns = “” était le coupable. Dès que j’ai comparé la mienne à votre réponse et corrigé le problème, cela fonctionnait. Merci pour l’aide

Si vous installez Visual Studio 2017 sans la partie outils de développement ASP.NET, il continuera à charger un projet Web, à le comstackr et à le construire. Il ne fera que donner des avertissements sur les versions du paquet NuGet, car il ne sait pas quoi faire avec le fichier web.config et ne peut donc pas voir les redirections de liaison.

La réparation de l’installation a résolu mon problème, mais il a fallu une éternité pour le résoudre