2012-02-26 10 views
7

Tenemos una aplicación web Asp.Net que estamos tratando de implementar en una carpeta, y estoy empezando a pensar que Microsoft está loco. ¿Por qué es tan difícil conseguir un WAP para hacer una ". Local FileSystem "¿implementar como parte de MSBuild?¿No se puede implementar msdeploy el paquete web en la carpeta temporal?

puedo construir con esto:

msbuild .\SubSite.csproj "/p:Platform=AnyCPU;Configuration=Release" /t:Package 

Y conseguir un buen package.zip que puedo desplegar en un sitio web ...

Sin embargo, tengo dos proyectos en mi solución, que me Necesito combinar antes de enviarlos, así que quiero implementar ambos paquetes en una carpeta y luego volver a empaquetar esa carpeta. A pesar de la documentation en TechNet to the contrary, no parece ser posible hacerlo:

msdeploy -verb:sync -source:package=.\SubSite.zip -dest:contentPath=.\Www\SubSite 

Debido a que recibe el error:

Source (sitemanifest) and destination (contentPath) are not compatible for the given operation.

¿Alguien tiene una sugerencia de cómo podría implementar dos Web sitios dentro de otro sin copiar manualmente los archivos de una carpeta "PackageTmp"? Quiero decir, soy consciente de que podría simplemente skip zipping the package and manually copy the files out hacer esto, pero no estoy contento de tener que crear un objetivo personalizado, y no hay otra manera de encontrar eso solo para hacer algo que debería incluirse.

+1

De hecho, una respuesta aquí (incluso si es "Eso no es posible") sería genial. –

Respuesta

1

Nos eventualmente encontrar la manera de hacer esto, pero no estoy muy feliz por eso ;-)

Básicamente, (como se mencionó en otra parte de algo así), puede llamar msbuild con el objetivo fijado a _WPPCopyWebApplication. También puede especificar/anular la propiedad WebProjectOutputDir cuando lo haga. Algo como esto (donde $ {nombre} son las variables que estamos usando)

msbuild ${SourcePath}\Www\UI\UI.csproj "/p:Platform=AnyCPU;Configuration=Release;WebProjectOutputDir=${OutputPath}\AppRoot" "/t:_WPPCopyWebApplication" 
msbuild ${SourcePath}\Www\Mobile\Mobile.csproj "/p:Platform=AnyCPU;Configuration=Release;WebProjectOutputDir=${OutputPath}\AppRoot\Mobile" "/t:_WPPCopyWebApplication" 
msbuild ${SourcePath}\Www\Service\WebService.csproj "/p:Platform=AnyCPU;Configuration=Release;WebProjectOutputDir=${OutputPath}\AppRoot\WebServices" "/t:_WPPCopyWebApplication" 

Podemos entonces empaquetar toda la "AppRoot" en una etapa distinta.

Cuestiones relacionadas