msbuild msdeploy

msbuild - _CopyWebApplication con transformaciones web.config



msdeploy (1)

Intento que mi aplicación web se publique automáticamente cuando se realiza una versión de lanzamiento. Lo hago utilizando el objetivo _CopyWebApplication. Agregué lo siguiente a mi archivo .csproj:

<!-- Automatically Publish in Release build. --> <Import Project="$(MSBuildExtensionsPath)/Microsoft/VisualStudio/v10.0/WebApplications/Microsoft.WebApplication.targets" /> <Target Name="AfterBuild"> <RemoveDir Directories="$(ProjectDir)../Output/MyWeb" ContinueOnError="true" /> <MSBuild Projects="MyWeb.csproj" Properties="Configuration=Release;WebProjectOutputDir=$(ProjectDir)../Output/MyWeb;OutDir=$(ProjectDir)bin/" Targets="ResolveReferences;_CopyWebApplication" /> </Target>

Esto funciona pero con un problema. La diferencia entre esta salida y la salida generada al utilizar el elemento de menú Publicar en Visual Studio es que la transformación Web.Release.config no se aplica al archivo Web.config cuando se utiliza el método MSBuild. En su lugar, se copian Web.config, Web.Release.config y Web.Debug.config.

Cualquier idea es apreciada.


Me he golpeado la cabeza contra la pared por esto. Después de recorrer los objetivos de MSBuild me encontré con algo muy "opaco".

Para _WPPCopyWebApplication : intente usar la nueva _WPPCopyWebApplication . Funciona en mi máquina. La antigua _CopyWebApplication no admite transformaciones por razones heredadas. Esto es lo que hago:

msbuild /t:Rebuild /p:OutDir=../publish/;Configuration=Release;UseWPP_CopyWebApplication=True;PipelineDependsOnBuild=False MvcApplication1/MvcApplication1.csproj # UseWPP_CopyWebApplication = true requires PipelineDependsOnBuild = false

Larga historia:

Eche un vistazo a VisualStudio/v10.0/WebApplications/Microsoft.WebApplication.targets . Está muy mal. Busque _CopyWebApplication en la línea 70. El comentario es:

La _CopyWebApplication original ahora es un Legacy, aún puede usarla estableciendo $ ( UseWPP_CopyWebApplication ) en true . De forma predeterminada, ahora cambia para usar el destino _WPPCopyWebApplication en Microsoft.Web.Publish.targets. Permite aprovechar la web.config trsnaformation. [todos sic]

UH oh. UseWPP_CopyWebApplication predeterminada en falso (línea 27), lo que tiene sentido si no desea romper la _CopyWebApplication existente. Por lo tanto, configurarlo en verdad usará las nuevas cosas de WPP introducidas en VS 2010. Prefiero esto más que llamar un objetivo "oculto".