Je viens de mettre à jour un projet ASP.NET MVC 5 de .NET Framework 4.5.1 à 4.6.1. J'ai également mis à jour les packages NuGet.
Maintenant, lorsque je construis le projet, je vois plusieurs douzaines d'avertissements de Conflit rencontré entre ...
. J'ai inclus plusieurs de ces entrées provenant de la fenêtre de sortie de VS :
1>_HandlePackageFileConflicts:
1> Conflit rencontré entre 'Reference:Microsoft.Win32.Primitives, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL' et 'Reference:Microsoft.Win32.Primitives'. Je choisis 'Reference:Microsoft.Win32.Primitives' car AssemblyVersion '4.0.3.0' est supérieure à '4.0.2.0'.
1> Conflit rencontré entre 'Reference:System.AppContext, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL' et 'Reference:System.AppContext'. Je choisis 'Reference:System.AppContext' car AssemblyVersion '4.1.2.0' est supérieure à '4.0.0.0'.
1> Conflit rencontré entre 'Reference:System.Console, Version=4.0.1.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL' et 'Reference:System.Console'. Je choisis 'Reference:System.Console' car AssemblyVersion '4.0.2.0' est supérieure à '4.0.1.1'.
1> Conflit rencontré entre 'Reference:System.Diagnostics.TraceSource, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL' et 'Reference:System.Diagnostics.TraceSource'. Je choisis 'Reference:System.Diagnostics.TraceSource' car AssemblyVersion '4.0.2.0' est supérieure à '4.0.1.0'.
1> Conflit rencontré entre 'Reference:System.Globalization.Calendars, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL' et 'Reference:System.Globalization.Calendars'. Je choisis 'Reference:System.Globalization.Calendars' car AssemblyVersion '4.0.3.0' est supérieure à '4.0.2.0'.
Le fichier packages.config
contient ce qui semble être des références de version correctes :
Et le dossier packages/ contient également les versions correctes. 4.3.0 et 4.5.0 pour les 2 entrées ci-dessus.
Comment résoudre ces conflits ?
* *
MISE À JOUR
Il y a une Référence à Microsoft.Win32.Primitives avec un Chemin de
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\Microsoft.Win32.Primitives.dll
La référence est configurée lorsque le package NuGet est installé. Je ne comprends pas pourquoi NuGet installe la version 4.3.0 et ajoute une Référence dans le projet à une extension qui est en version 4.0.2.0 et pourtant résout le conflit en utilisant la version 4.3.0 car elle est plus récente.
Ce comportement est déroutant. Cela fonctionne bien sur mon PC local, mais j'ai un problème subtil sur l'un des serveurs de staging après la publication. Je soupçonne qu'il y a un ou plusieurs packages où ce conflit n'est pas résolu correctement sur le serveur de staging.
J'essaie de comprendre comment éliminer cette sélection au hasard de ces dépendances. :S