2017-10-04 1 views
2

Je reçois un avertissement MSB3277 gênant lorsque je compile mon projet. J'ai augmenté verbosité à « détaillée » et je suis en mesure d'obtenir les informations suivantes du journal:Comment diagnostiquer l'avertissement MSB3277: Conflits trouvés entre les différentes versions du même assembly dépendant qui n'ont pas pu être résolus

 There was a conflict between "Pathoschild.Http.Client, Version=3.0.0.0, Culture=neutral, PublicKeyToken=null" and "Pathoschild.Http.Client, Version=3.1.0.0, Culture=neutral, PublicKeyToken=null". 
     "Pathoschild.Http.Client, Version=3.0.0.0, Culture=neutral, PublicKeyToken=null" was chosen because it was primary and "Pathoschild.Http.Client, Version=3.1.0.0, Culture=neutral, PublicKeyToken=null" was not. 

     References which depend on "Pathoschild.Http.Client, Version=3.0.0.0, Culture=neutral, PublicKeyToken=null" [C:\Users\desau\.nuget\packages\pathoschild.http.fluentclient\3.0.0\lib\netstandard1.3\Pathoschild.Http.Client.dll]. 
      C:\Users\desau\.nuget\packages\pathoschild.http.fluentclient\3.0.0\lib\netstandard1.3\Pathoschild.Http.Client.dll 
       Project file item includes which caused reference "C:\Users\desau\.nuget\packages\pathoschild.http.fluentclient\3.0.0\lib\netstandard1.3\Pathoschild.Http.Client.dll". 
       C:\Users\desau\.nuget\packages\pathoschild.http.fluentclient\3.0.0\lib\netstandard1.3\Pathoschild.Http.Client.dll 

     References which depend on "Pathoschild.Http.Client, Version=3.1.0.0, Culture=neutral, PublicKeyToken=null" []. 
      C:\Users\desau\.nuget\packages\stronggrid\0.30.0\lib\netstandard1.3\StrongGrid.dll 
       Project file item includes which caused reference "C:\Users\desau\.nuget\packages\stronggrid\0.30.0\lib\netstandard1.3\StrongGrid.dll". 
       C:\Users\desau\.nuget\packages\stronggrid\0.30.0\lib\netstandard1.3\StrongGrid.dll 

Si je comprends ce journal correctement, il me dit que mes références de projet de version 3.0 et Pathoschild.Http.Client aussi version 3.1. Je comprends la référence à la version 3.1 parce que mon projet fait référence à un paquet nuget appelé StrongGrid qui lui-même fait référence à Pathoschild version 3.1

Mais je ne comprends pas d'où vient la référence à la version 3.0. J'utilise Visual Studio 2017 et MSBuild 15 dans le cas où c'est une information utile. J'utilise Visual Studio 2017 et Microsoft 15.

+0

Utilisez-vous VS 2017 version 15.3 et .NET Core SDK 2.0.0? (publié en août) - ils devraient contenir la logique de résolution de conflit nécessaire –

+0

VS 2017 Version 15.3.5 et en construisant à partir de l'invite de commande, il dit simplement 'Construire avec la version des outils" 15.0 "' – desautelsj

+0

Exécuter 'dotnet --info':' Outils de ligne de commande .NET (2.0.0) ' – desautelsj

Répondre

2

La raison de ce problème est que le package StrongGrid a été créé de manière incorrecte.

La version 0.30 de StrongGrid est construite contre la version 3.1.0 de Pathoschild.Http.FluentClient, mais leur dossier .nuspec utilisé pour la création du package NuGet listes encore la version 3.0.0 comme la dépendance, de sorte que le projet consommation va chercher une version plus ancienne, ce qui crée un conflit qui ne peut pas être résolu. Pour contourner ce problème, vous pouvez référencer explicitement la version 3.1.0 de Pathoschild.Http.FluentClient en ajoutant une référence de package au fichier csproj pour remplacer la version.