Для чего нужен NuGetPackageImportStamp?

При добавлении определенных пакетов NuGet в проект иногда в первой группе свойств файла .csproj появляется странный элемент.

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

Штамп отличается каждый раз и не кажется последовательным.

Я не могу найти ссылку на <NuGetPackageImportStamp> в документации NuGet. Для чего и как это работает? Это необходимо?

Один пакет, который добавляет это каждый раз, StyleCop.MSBuild, по крайней мере, с текущей версией версии 4.7.49. Просто добавьте этот пакет в новый проект, и вы увидите, что этот объект тайны появится в вашем файле проекта.

Ответ 1

Это временное решение для Visual Studio 2013.

Если вы посмотрите на исходный код NuGet, вы увидите, что NuGet добавляет это свойство, когда пакет NuGet добавляет или удаляет импорт MSBuild. Он каждый раз использует новый указатель и, кажется, способ сообщить Visual Studio 2013, что проект изменился. Я предполагаю, что это связано с тем, что просто добавление или удаление импорта MSBuild недостаточно для Visual Studio, чтобы знать, что проект изменился во время выполнения.

В пакет StyleCop.MSBuild NuGet входит пользовательская цель MSBuild, поэтому добавление или удаление этого пакета NuGet приведет к добавлению этого свойства.

Я считаю, что свойство не требуется, поэтому вы должны быть в порядке, чтобы удалить его. Если вы закроете и повторно откроете решение, импортированные объекты MSBuild будут перезагружены Visual Studio.

Это обходное решение не требуется для других версий Visual Studio.