什么是NuGetPackageImportStamp?

将某些NuGet打包添加到项目中时,有时会在.csproj文件的第一个属性组中显示一个奇怪的项目。

<PropertyGroup> ... <NuGetPackageImportStamp>3d051ef3</NuGetPackageImportStamp> </PropertyGroup> 

邮票每次都是不同的,而且看起来并不连贯。

在NuGet文档中我找不到任何对<NuGetPackageImportStamp>引用。 它是什么,它是如何工作的? 有必要吗?

一个似乎每次都会添加的包是StyleCop.MSBuild ,至less在当前的4.7.49版本中是这样的。 只需将该软件包添加到新项目中,即可看到这个神秘项目出现在您的项目文件中。

这是Visual Studio 2013的解决方法。

如果您查看NuGet源代码,您会看到NuGet在添加或删除MSBuild导入时添加了此属性。 它每次都使用一个新的guid,似乎是告诉Visual Studio 2013项目已经改变的方法。 我认为这是因为只是添加或删除一个MSBuild导入是不够的Visual Studio知道项目已经在运行时改变。

StyleCop.MSBuild NuGet包包含一个自定义的MSBuild目标,所以添加或删除这个NuGet包会导致添加这个属性。

我相信财产不是必需的,所以你应该可以删除它。 如果closures并重新打开解决scheme,则导入的MSBuild目标将由Visual Studio重新加载。

其他版本的Visual Studio不需要此变通办法。