Dans une grande solution avec 52 projets (tous net462), la version la plus récente de certains de nos dépendances sont maintenant créés uniquement pour NET standard. Par conséquent, ils dépendent du package NuGet NETStandard.Library
qui traîne dans beaucoup d'autres 4.3.x version d' System.*
des paquets qui sont normalement dans le .NET Framework lui-même.
Comme un résultat, certains projets de référence System.*
des bibliothèques dans le dossier packages, tandis que d'autres référence System.*
des bibliothèques de la .NET Framework.
Cela provoque bien connu de l'exécution problème, f.e.:
Message: Système.IO.FileLoadException : impossible de charger le fichier ou l'assembly 'Système.Net.Http, Version=4.1.1.2, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' ou une de ses dépendances. L'assemblée manifeste définition ne correspond pas à la référence d'assembly. (Exception de HRESULT: 0x80131040)
Creuser dans les dépendances de l' NETStandard.Library
forfaits, nous pouvons voir que le même problème existe également dans ces paquets:
- Système.Les Collections.*
- Système.ComponentModel.*
- Système.Console
- Système.De la mondialisation.*
- Système.IO.*
- Système.Linq.*
- System.Net.*
- Système.ObjectModel
- Système.De la réflexion.*
- Système.Les ressources.ResourceManager
- Système.Moment de l'exécution.*
- Système.De texte.*
- Système.Le filetage.*
- System.Xml.*
Normalement c'est résolu en installant le même paquet dans les autres projets, mais nous avons affaire à un grand nombre de projets et beaucoup de paquets et je ne veux pas aveuglément ajouter toutes ces dépendances à l'ensemble des 52 projets.
Cela m'a fait me demander si quelqu'un connaît un moyen facile de se sortir de cette situation et de rendre tous les projets de référence le bon forfait/DLL dans le dossier packages NuGet si ils utilisent le NET Framework interne.
Un simple VS-solution pour net462 et net471 montrant le problème peut être trouvée ici