什么是NuGetPackageImportStamp?

Mat*_*int 68 .net msbuild csproj nuget

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

<PropertyGroup>
  ...
  <NuGetPackageImportStamp>3d051ef3</NuGetPackageImportStamp>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

邮票每次都不同,并且看起来不是连续的.

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

一个似乎每次添加这个的包是StyleCop.MSBuild,至少使用当前的4.7.49版本.只需将该包添加到新项目中,您就会看到这个神秘项目出现在您的项目文件中.

Mat*_*ard 74

NuGetPackageImportStamp是Visual Studio 2013及更高版本的解决方法,无法检测到添加或删除了MSBuild导入的NuGet包.

旧版Visual Studio不需要此解决方法.即使在Visual Studio 2013中,也可以安全地删除该属性:如果关闭并重新打开解决方案,Visual Studio将重新加载导入的MSBuild目标.

NuGet源代码显示,当包添加或删除MSBuild导入时,NuGet会添加此属性.它每次都使用一个新的GUID.Visual Studio 2013检测到项目已更改并提供重新加载.仅添加或删除MSBuild导入是不足以让Visual Studio 2013知道项目在运行时已更改,这是NuGet通过此变通方法解决的问题.

StyleCop.MSBuild NuGet包中包含一个自定义MSBuild目标,因此添加或删除此NuGet包将导致添加此属性.

  • @ hvaughan3 - 不管你选择哪种指导都没关系. (2认同)