What is NuGetPackageImportStamp for?
When adding certain NuGet packges to a project, sometimes a strange item appears in the first property group of the .csproj file.
<PropertyGroup> ... <NuGetPackageImportStamp>3d051ef3</NuGetPackageImportStamp> </PropertyGroup>
The stamp is different every time, and doesn't appear to be sequential.
I can't find any reference to <NuGetPackageImportStamp> in the NuGet documentation. What is it for and how does it work? Is it necessary?
One package that appears to add this every time is StyleCop.MSBuild, at least with the current 4.7.49 version. Simply add that package to a new project and you'll see this mystery item appear in your project file.
It is a workaround for Visual Studio 2013.
If you look at the NuGet source code you will see that NuGet adds this property when a NuGet package adds or removes an MSBuild import. It uses a new guid each time and seems to be a way to tell Visual Studio 2013 that the project has changed. I assume this is because that just adding or removing an MSBuild import is not enough for Visual Studio to know the project has changed at runtime.
The StyleCop.MSBuild NuGet package includes a custom MSBuild target so adding or removing this NuGet package will cause this property to be added.
I believe the property is not required so you should be OK to remove it. If you close and re-open the solution then the imported MSBuild targets will be re-loaded by Visual Studio.
This workaround is not required for other versions of Visual Studio.