vs2013 visual update studio nupkg manager powershell nuget nuget-package

powershell - visual - NuGet: ¿Cómo puedo cambiar la propiedad de los archivos con el archivo Install.ps1?



powershell install nuget package (2)

Aquí hay un poco más de detalles sobre cómo resolver este problema de principio a fin:

Debe hacer dos cosas para garantizar que el estado se establezca correctamente en la instalación ...

  1. Escriba el script install.ps1 para marcar el estado de los archivos.
  2. Asegúrese de que el script install.ps1 esté en el directorio de Herramientas en el paquete nuget.

Install.ps1 Script

La siguiente secuencia de comandos de ejemplo marcará recursivamente cada archivo en el directorio "Contenido" y "Ver" como "Copiar al más nuevo". Tenga en cuenta que este script de ejemplo está escrito para que sea claro para leer y entender. Marcará cada archivo en las carpetas de Contenido y Vistas en el directorio raíz del proyecto de Visual Studios.

param($installPath, $toolsPath, $package, $project) function MarkDirectoryAsCopyToOutputRecursive($item) { $item.ProjectItems | ForEach-Object { MarkFileASCopyToOutputDirectory($_) } } function MarkFileASCopyToOutputDirectory($item) { Try { Write-Host Try set $item.Name $item.Properties.Item("CopyToOutputDirectory").Value = 2 } Catch { Write-Host RecurseOn $item.Name MarkDirectoryAsCopyToOutputRecursive($item) } } #Now mark everything in the a directory as "Copy to newer" MarkDirectoryAsCopyToOutputRecursive($project.ProjectItems.Item("Content")) MarkDirectoryAsCopyToOutputRecursive($project.ProjectItems.Item("Views"))

Copiar a Herramientas

Debe copiar el archivo install.ps1 en el directorio de herramientas para que nuget ejecute el script. Puede agregar lo siguiente a la plantilla nuspec para hacer esto.

<files> <file src="install.ps1" target="Tools"/> </files>

Tenga en cuenta que en este caso tengo el archivo install.ps1 en la raíz de mi proyecto de Visual Studios y marcado como "Copiar si es más nuevo".

Estoy creando el paquete NuGet y para eso he creado el archivo de manifiesto Nuspec. En la carpeta de content tengo dos archivos, test.exe y test.config . Ahora me gustaría cambiar la propiedad "Copiar al directorio de salida" de estos archivos a "Copiar siempre" en el proyecto, cuando cualquier usuario instala este paquete.

Encontré la pregunta relacionada NuGet sobre cómo aplicar las propiedades a los archivos , eso muestra que puede hacer esto usando el script de instalación PowerShell.ps1, pero no tengo idea de cómo crear ese archivo.


Su archivo install.ps1 debería verse algo como esto.

param($installPath, $toolsPath, $package, $project) $file1 = $project.ProjectItems.Item("test.exe") $file2 = $project.ProjectItems.Item("test.config") # set ''Copy To Output Directory'' to ''Copy if newer'' $copyToOutput1 = $file1.Properties.Item("CopyToOutputDirectory") $copyToOutput1.Value = 2 $copyToOutput2 = $file2.Properties.Item("CopyToOutputDirectory") $copyToOutput2.Value = 2