A quoi sert NuGetPackageImportStamp?

Lors de l’ajout de certains packs NuGet à un projet, un élément étrange apparaît parfois dans le premier groupe de propriétés du fichier .csproj.

 ... 3d051ef3  

Le timbre est différent à chaque fois et ne semble pas être séquentiel.

Je ne trouve aucune référence à dans la documentation de NuGet. A quoi ça sert et comment ça marche? Est-ce nécessaire?

Un package qui semble l’append à chaque fois est StyleCop.MSBuild , au moins avec la version 4.7.49 actuelle. Ajoutez simplement ce package à un nouveau projet et vous verrez cet object mystère apparaître dans votre fichier de projet.

NuGetPackageImportStamp est une solution de contournement permettant à Visual Studio 2013 de ne pas détecter qu’un package NuGet a ajouté ou supprimé une importation MSBuild.

Cette solution de contournement n’est pas requirejse pour les autres versions de Visual Studio. Même dans Visual Studio 2013, la propriété peut être supprimée en toute sécurité : si vous fermez et rouvrez la solution, les cibles MSBuild imscopes seront rechargées par Visual Studio.

Le code source de NuGet révèle que NuGet ajoute cette propriété lorsqu’un package ajoute ou supprime une importation MSBuild. Il utilise un nouveau GUID à chaque fois. Visual Studio 2013 détecte que le projet a changé et propose son rechargement. Il ne suffit pas d’append ou de supprimer une importation MSBuild pour que Visual Studio 2013 sache que le projet a été modifié à l’exécution, ce que NuGet résout par cette solution de contournement.

Le package StyleCop.MSBuild NuGet inclut une cible MSBuild personnalisée. Par conséquent, l’ajout ou la suppression de ce package NuGet entraînera l’ajout de cette propriété.