Estoy utilizando Web Deploy para empacar e implementar sitios web para mi producto. En particular, tengo dos proyectos diferentes en mi solución. Utilizo este método para implementar.Uso de MsBuild para generar el manifiesto personalizado de MsDeploy (destino del paquete)
Tengo un tercer proyecto en la solución (un servicio de Windows) que también debe instalarse en el servidor web.
Sé que puedo escribir un manifiesto personalizado (para los proveedores dirPath
, filePath
y runCommand
) y llamar directamente a MsDeploy para implementarlo. Pero me gustaría aprovechar las tareas existentes de MsBuild para empaquetar mi servicio si es posible.
veo que es posible hacer algún tipo de personalización del archivo de manifiesto a través de los objetivos msbuild:
http://social.msdn.microsoft.com/Forums/en/msbuild/thread/1044058c-f762-456b-8a68-b0863027ce47
Particularmente utilizando el elemento MsDeploySourceManifest
.
Después de meter a través de los archivos .targets apropiadas, parece que sea contentPath
o iisApp
obtendrá añade a mis manifiesta si utilizo el objetivo Package
. Idealmente, me gustaría copiar un ensamblaje (o directorio), posiblemente establecer ACL y ejecutar installutil.exe en el servicio.
¿Es posible personalizar completamente el manifiesto generado por el objetivo Package
, editando mi archivo csproj?
Si no, ¿hay una manera simple de construir un nuevo objetivo que haga el equivalente a Package
, pero permítanme escupir un manifiesto completamente personalizado?
¿Recibió una respuesta a esto? – musica
@Graci: lo hice. Estoy terminando el tema de trabajo para esto durante esta semana, y publicaré una respuesta después de que todo esté funcionando. Los conceptos clave son crear un archivo '.targets' personalizado, usar sus destinos personalizados para agregar entradas del proveedor' runCommand' para ejecutar archivos por lotes personalizados (para detener/desinstalar el servicio e instalarlo/iniciarlo), agregue un Parámetros personalizado. archivo xml al proyecto y establecer ciertos indicadores, como 'IncludeIisSettingsOnPublish = False' y' IncludeIisSettingsOnPublish = False'. Ah, y la extensión gratuita de transformación no web de SlowCheetah ayudó también. –
@Merlyn: Sería genial si encontraras tiempo para compartir tu solución, de tu último comentario parece que lo tienes bien cubierto. –