tag que poner ejemplos cursiva como .net msbuild nuget csproj

.net - que - ¿Para qué sirve NuGetPackageImportStamp?



tags h1 ejemplos (1)

Al agregar ciertos paquetes NuGet a un proyecto, a veces aparece un elemento extraño en el primer grupo de propiedades del archivo .csproj.

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

El sello es diferente cada vez, y no parece ser secuencial.

No puedo encontrar ninguna referencia a <NuGetPackageImportStamp> en la documentación de NuGet. ¿Para qué sirve y cómo funciona? ¿Es necesario?

Un paquete que parece agregar esto cada vez es StyleCop.MSBuild , al menos con la versión actual 4.7.49. Simplemente agregue ese paquete a un nuevo proyecto y verá que este elemento misterioso aparece en su archivo de proyecto.


NuGetPackageImportStamp es una solución para Visual Studio 2013 que no puede detectar que un paquete NuGet haya agregado o eliminado una importación de MSBuild.

Esta solución no es necesaria para otras versiones de Visual Studio. Incluso en Visual Studio 2013, la propiedad se puede eliminar de forma segura : si cierra y vuelve a abrir la solución, Visual Studio volverá a cargar los objetivos de MSBuild importados.

El código fuente de NuGet revela que NuGet agrega esta propiedad cuando un paquete agrega o elimina una importación de MSBuild. Utiliza un nuevo GUID cada vez. Visual Studio 2013 detecta que el proyecto ha cambiado y ofrece su recarga. Simplemente agregar o eliminar una importación de MSBuild no es suficiente para que Visual Studio 2013 sepa que el proyecto ha cambiado en tiempo de ejecución, que es lo que NuGet resuelve con esta solución.

El paquete StyleCop.MSBuild NuGet incluye un objetivo personalizado de MSBuild, por lo que agregar o eliminar este paquete NuGet hará que se agregue esta propiedad.