Comment utiliser le Microsoft.Bcl.Async droit?
- Je utiliser le Microsoft.Bcl.Async
package dans un projet, et ce projet est référencé par un autre projet qui n'utilise pas async fonctionnalités.
Maintenant j'ai l'avertissement d'erreur quand je compile la solution (ou seulement le deuxième projet):
La base de référence "XYZ.dll" ne peut pas être résolu, car il a une dépendance indirecte sur le cadre de l'assemblée "du Système.De l'exécution, Version=1.5.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" qui n'a pas pu être résolu dans le ciblées cadre. ".NETFramework,Version=v4.0". Pour résoudre ce problème, supprimez la référence "XYZ.dll" ou réorienter votre demande pour une version qui contient "le Système de.De l'exécution, Version=1.5.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
- Je utiliser dans les deux projets de cette application.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:bcl="urn:schemas-microsoft-com:bcl">
<dependentAssembly bcl:name="System.Runtime">
<assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.5.16.0" newVersion="2.5.16.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.5.16.0" newVersion="2.5.16.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Ce que je fais mal?
Je ne veux pas référence à la async paquet dll.
Je ne peux pas utiliser .Net 4.5 cible. Il doit être .Net 4.
Framework cible pour tous les projets: .NET Framework 4
- Ce sont la cible des cadres, soit des projets?
- Framework cible pour tous les projets ".NET Framework 4"
- Étrange, j'ai eu aucun problème pour le référencement des assemblées à l'aide de ce logiciel. Avez-vous d'ajouter Microsoft.Bcl.Async pour les deux projets?
- C'est ce que je ne veux pas. Dans le second projet ne async fonction est utilisée. N'est-ce pas possible?
- J'ai un problème similaire dans mon projet 4.0 et il se casse d'analyse de code avec CA0060, qui ne peut pas être supprimé. J'ai dû désactiver CA pour l'instant, mais le plan sur la recherche dans ce plus en détail plus tard.
Vous devez vous connecter pour publier un commentaire.
Résumé:
Il ya un couple de solutions s'offrent à vous:
Installer le Microsoft.Bcl.Async package pour le référencement projet.
Installer le Microsoft.Bcl.Construire package pour le référencement de projet. Ce contient le correctif, et est uniquement une dépendance. Lorsque vous faites cela, vous devez posséder la liaison redirige dans le projet de l'Application.Config (comme ce que vous avez énuméré ci-dessus) - qu'il s'agisse d'une bibliothèque de classe, projet web ou d'un fichier exécutable.
Si vous ne voulez pas une dépendance sur tout emballage, de saisir le contenu de l'élément PropertyGroup au sein de Microsoft.Bcl.les objectifs de fichier (installé avec Microsoft.Bcl.Construire), et de l'insérer au bas de la référence au projet après le dernier élément.
Remarque: Qui jamais de l'option choisie ci-dessus, lorsque vous expédiez une bibliothèque qui prend une dépendance de Microsoft.Bcl.Asynchrone (comme avec l'ancien Microsoft.CompilerServices.AsyncTargetingPack), vous devez expédier ces binaire (le Système.De L'Exécution, Du Système.Le filetage.Tâches, Microsoft.Le filetage.Les tâches.*) avec l'application qui utilise votre bibliothèque.
Longue histoire:
Comme l'a fait remarquer Pierre c'est un problème connu qui se produit uniquement pour Microsoft.Bcl.Async et pas de Microsoft.CompilerServices.AsyncTargetingPack, en raison de la façon dont ils sont conçus.
Partie de la conception de Microsoft.Bcl.Async était de backport (via un package NuGet) quelques nouvelles .NET 4.5-ensembles du Système.De L'Exécution, Du Système.Le filetage.Les tâches), de sorte qu'il courait sur la 4.0. MSBuild n'aime pas cela, et il la fait croire que le référencement de la bibliothèque a pris une dépendance sur un assemblage à partir d'une nouvelle version de framework. La solution de contournement de Microsoft.Bcl.Construire ce package de correctifs.
Utilisation Ciblage asynchrone Pack pour Visual Studio 11 à la place.
Install-Package Microsoft.CompilerServices.AsyncTargetingPack
Si vous préférez utiliser le Microsoft.Bcl.Async préliminaire, vous devez les ajouter à tous les projets. La prochaine version de la Bcl.Async devrait avoir un service de messagerie amélioré afin de mieux détail.
Si vous utilisez VS 2010, la seule chose que je sais de qui vous donne async/attente est la AsyncCTP; donc, il n'est pas judicieux d'utiliser Microsoft.Bcl.Async dans VS 2010.
mise à jour:
W. R. T à Microsoft.Bcl.Async: La question autour de l'ESM avertissement ("ne peut pas être résolu...dépendance indirecte..." est connue et traitée. Dans certaines future mise à jour (à MSBuild et Microsoft.Bcl.Async) ce sera fixe et vous ne inclure Microsoft.Bcl.Async dans les deux projets.
<UseHostCompilerIfAvailable Condition=" '$(VisualStudioVersion)'=='' Or $(VisualStudioVersion) < 11 ">false</UseHostCompilerIfAvailable>
. Vous souhaiterez peut-être désactiver Intellisense et indentation automatique ;-).