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


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

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

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

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

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

1 64

1 ответ:

nugetpackageimportstamp-это обходной путь для Visual Studio 2013, который не может обнаружить, что пакет NuGet добавил или удалил импорт MSBuild.

этот обходной путь не требуется для других версий Visual Studio. Даже в Visual Studio 2013 с, свойство может быть безопасно удалены: при закрытии и повторном открытии решения импортированные целевые объекты MSBuild будут повторно загружены Visual Studio.

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

StyleCop.Пакет MSBuild NuGet содержит настраиваемый целевой объект MSBuild, поэтому добавление или удаление этого пакета NuGet приведет к появлению этого свойства для добавления.