2011-06-29 15 views
6

Estoy desarrollando un paquete nuget que configurará el proyecto actual para usar el estándar de versiones de montaje de mi compañía. Lo tengo haciendo todo lo que quiero (hasta ahora) sin problemas, aparte de agregar un paso de compilación personalizado.Agregando un paso de compilación personalizado con un paquete nuget

Históricamente, esto se ha hecho manualmente editando el archivo .csproj directamente y agregando un par de nuevas etiquetas en el xml. Estos son ...

  • Property Group
  • Objetivo

En realidad, los agrega en el éxito, pero lo he hecho editando el XML en lugar de a través del objeto EnvDTE en el $ project parámetro en install.ps1. Pero aparece un mensaje preguntándome si quiero descartar mis cambios.

He agregado $project.Save() a mi script justo antes de hacer los cambios y eso elimina la ventana emergente, y acabo de obtener el que me dice que el proyecto ha cambiado y me pregunta si quiero volver a cargarlo. Que es mejor, pero aún no es perfecto.

¿Hay una mejor manera de hacerlo?

Respuesta

9

También puede utilizar el paquete NuGetPowerTools escrito por David Fowler (NuGet desarrollador principal).

Install-Package NuGetPowerTools 

añadirlo como una dependencia de su paquete, a continuación, en el guión install.ps1, puede llamar a:

Add-Import "\Path\To\Import.targets" $project.ProjectName 
Set-MSBuildProperty "MyPropertyName" "MyPropertyValue" $project.ProjectName 

$value = Get-MSBuildProperty "MyPropertyName" $project.ProjectName 

Salida el código en https://github.com/davidfowl/NuGetPowerTools para obtener más información.

+1

Nota para lectores futuros: las nuevas versiones de NuGet lo habilitan automáticamente al agregar un archivo '.targets' a la carpeta' tools' de su paquete. – Crisfole

+1

Gracias. Creo que en el futuro, comenzaré con "A partir de NuGet versión X.Y ...". – Kiliman

+0

Sí. Están haciendo un gran trabajo desarrollando la herramienta. – Crisfole

3

Scott Hanselman hizo esto en mix11. Su técnica consistía en descargar el proyecto (utilizando DTE), modificarlo con PowerShell y volver a cargarlo (utilizando DTE de nuevo).

http://channel9.msdn.com/Events/MIX/MIX11/FRM09

+2

Apuesto a que Scott usa la palabra "poop" en su demo. –

Cuestiones relacionadas