.net NuGetPackageImportStamp的用途是什么?

.net NuGetPackageImportStamp的用途是什么?,.net,msbuild,nuget,csproj,.net,Msbuild,Nuget,Csproj,将某些NuGet包添加到项目时,有时会在.csproj文件的第一个属性组中出现一个奇怪的项 <PropertyGroup> ... <NuGetPackageImportStamp>3d051ef3</NuGetPackageImportStamp> </PropertyGroup> ... 3d051ef3 邮票每次都不一样,而且似乎不是连续的 我在NuGet文档中找不到任何对的引用。它是干什么用的?它是如何工作的?有必要吗 至少在

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

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

...
3d051ef3
邮票每次都不一样,而且似乎不是连续的

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


至少在当前的4.7.49版本中,有一个软件包似乎每次都会添加此功能。只需将该包添加到新项目中,您就会在项目文件中看到此神秘项。

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

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

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

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


更新:正确且重要

中仍有代码,并且该代码不再检查Visual Studio 2013

以下是我的基本建议:

  • 使用Visual Studio或Powershell创建新项目
  • 更新旧csproj时,如果它不工作,请将此旧csproj与使用Visual Studio或Powershell创建的新工作csproj进行比较。如果新的工作csproj使用了
    指令,那么将其添加到旧的损坏csproj中,看看这是否解决了问题;无论您使用的是哪个Visual Studio版本
  • 如果您的旧CSPROJ仍然无效,请考虑<代码> <代码>指令。它是否存在于您的新工作csproj中?考虑删除这一点。
目前,我正在将两个分支合并在一起,并且在每个项目的
csproj
文件中,该值总是不同的。我选择哪个GUID重要吗?@hvaughan3-不,选择哪个GUID不重要。元素仍然存在。我在一台只安装了VS2017的机器上工作,我(VS)已设法将其添加到csproj文件中。中仍有代码,并且代码不再检查Visual Studio 2013。