J'ai un projet WPF (.NET 4) utilisant l'API de raccourcisseur d'URL de Google, j'ai installé la bibliothèque cliente via le nugget https://www.nuget.org/packages/Google.Apis.Urlshortener.v1/1.7.0.25.25- beta
l'application fonctionne bien dans visual studio, mais une fois publiée, elle lève l'exception Impossible de charger le fichier ou l'assembly System.Threading.Tasks, version = 2.5.19.0 . Cet assemblage et tous les autres assemblys sont présents dans la liste. dossier d'installation, et il est publié avec l'application. J'ai cherché sur internet et les gens suggèrent de lier manuellement les bibliothèques de dépendances dans app.config, cela ne fonctionne toujours pas car toutes mes bibliothèques de dépendances sont déjà mentionnées dans app.config. Voici comment mon app.config ressemble à
<runtime>
<assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-2.5.19.0" newVersion="2.5.19.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-2.5.19.0" newVersion="2.5.19.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.1.10.0" newVersion="2.1.10.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Net.Http.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-2.1.10.0" newVersion="2.1.10.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-1.2.13.0" newVersion="1.2.13.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Threading.Tasks.Extensions.Desktop" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-1.0.165.0" newVersion="1.0.165.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
Vous pouvez commencer à partir du blog de l'équipe Microsoft BCL et nettoyer le fichier app.config en supprimant les mauvaises entrées,
http://blogs.msdn.com/b/bclteam/p/asynctargetingpackkb.aspx
Issue 6
Symptômes
Lors de l'ajout du package NuGet à un projet consommé par un autre projet Avec un framework cible différent, des avertissements Similaires au suivant:
La référence principale "Microsoft.Threading.Tasks, Version = 1.0.12.0, Culture = neutre, PublicKeyToken = b03f5f7f11d50a3a, ProcessorArchitecture = MSIL" n'a pas pu être résolue car elle possède un dépendance indirecte sur le cadre Assembly "System.Runtime, Version = 2.5.19.0, Culture = neutre, PublicKeyToken = b03f5f7f11d50a3a" qui ne peut pas être résolu dans le cadre actuellement ciblé. [.____. .] ".NETFramework, Version = v4.5". Pour résoudre ce problème, supprimez La référence "Microsoft.Threading.Tasks, Version = 1.0.12.0, Culture = neutre, PublicKeyToken = b03f5f7f11d50a3a, ProcessorArchitecture = MSIL" ou recibler votre application vers une version qui contient "System.Runtime, Version = 2.5.19.0, Culture = neutre, PublicKeyToken = b03f5f7f11d50a3a".
La référence principale "Microsoft.Threading.Tasks.Extensions, Version = 1.0.12.0, Culture = neutre, PublicKeyToken = b03f5f7f11d50a3a, ProcessorArchitecture = MSIL" n'a pas pu être résolue car elle contient un dépendance indirecte sur le cadre Assembly "System.Runtime, Version = 2.5.19.0, Culture = neutre, PublicKeyToken = b03f5f7f11d50a3a" qui n'a pas pu être résolu dans le cadre actuellement ciblé. ".NETFramework, Version = v4.5". Pour résoudre ce problème, supprimez La référence "Microsoft.Threading.Tasks.Extensions, version = 1.0.12.0, Culture = neutre, PublicKeyToken = b03f5f7f11d50a3a, ProcessorArchitecture = MSIL "ou reciblez votre application vers une version qui contient" System.Runtime, Version = 2.5.19.0, Culture = neutre, PublicKeyToken = b03f5f7f11d50a3a ".
Solution
Le problème est que NuGet a ajouté des redirections de liaison incorrectes pour les assemblys de plate-forme . Pour les supprimer, ouvrez app.config pour Le projet qui a provoqué les avertissements et supprimez les entrées En surbrillance ( StackOverflow ne prend pas en charge la surbrillance ):
<?xmlversion="1.0"encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBindingxmlns="urn:schemas-Microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentityname="System.Runtime"publicKeyToken="b03f5f7f11d50a3a"culture="neutral" />
<bindingRedirectoldVersion="0.0.0.0-2.5.19.0" newVersion="2.5.19.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentityname="System.Threading.Tasks"publicKeyToken="b03f5f7f11d50a3a"culture="neutral" />
<bindingRedirectoldVersion="0.0.0.0-2.5.19.0" newVersion="2.5.19.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
_ {Mise à jour par Lex Li:} _
Avec .NET Framework 4.0 en fin de vie, réfléchissez-y à deux fois avant d'utiliser le pack de ciblage asynchrone avant d'utiliser le pack de ciblage asynchrone. Si cette dépendance provient d'un package De NuGet, vous devez également vérifier si: le paquet NuGet a une version plus récente qui n’a pas une telle dépendance.
J'ai eu un problème très similaire ("Impossible de charger le fichier ou l'assembly Microsoft.Threading.Tasks, Version = 1.0.12.0") dans un projet UWP (VS2015) et je l'ai résolu en installant le package Microsoft.Bcl.Async de NuGet
J'ai eu exactement le même problème mais il a été causé par l'assembly Microsoft.Rest.ClientRuntime. Dans mon cas, tout ce que je devais faire était de définir "Copy local = True" sur la référence à Microsoft.Rest.ClientRuntime.