msbuild continuous-integration teamcity msdeploy

Lista completa de argumentos de/P MSDeploy para MSBuild de TeamCity



continuous-integration (2)

Actualmente utilizo el corredor de MSBuild en TeamCity para la integración continua en mi servidor local y esto funciona muy bien. Sin embargo, estoy teniendo problemas para encontrar una lista completa de los interruptores de línea de comandos compatibles para MSDeploy en el formato que TeamCity los espera.

En mi sección de ''Parámetros'' en este momento estoy usando los siguientes interruptores:

/P:Configuration=OnCommit /P:DeployOnBuild=True /P:DeployTarget=MSDeployPublish /P:MsDeployServiceUrl=https://CIServer:8172/MsDeploy.axd /P:AllowUntrustedCertificate=True /P:MSDeployPublishMethod=WMSvc /P:CreatePackageOnPublish=True /P:UserName=Kaine /P:Password=********** /P:DeployIISAppPath="OnCommit/MySite" /P:SkipExtraFilesOnServer=True /P:DeployAsIisApp=True

Todos estos parecen funcionar bien y el MSDeploy funciona como se esperaba.

El problema viene cuando quiero agregar parámetros adicionales.

He buscado los parámetros de MSBuild y la documentación de MSDeploy y parece que solo encuentro parámetros de línea de comandos como estos:

msbuild SlnFolders.sln /t:NotInSolutionfolder:Rebuild;NewFolder/InSolutionFolder:Clean

http://msdn.microsoft.com/en-us/library/ms164311.aspx

Parece que estas referencias para los argumentos de la línea de comandos no se corresponden con el formato / P: por ejemplo, CreatePackageOnPublish y DeployIISAppPath no se reconocen los parámetros de la línea de comandos, pero funcionan bien en el proceso de construcción de TeamCity.

¿Dónde puedo encontrar una lista documentada completa de los argumentos de MSDeploy en el formato?

/ P: Param = Valor

Información adicional:

Aquí hay una lista de parámetros:

http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.build.workflow.activities.msbuild_properties.aspx

Sin embargo, esta no es una lista completa; por ejemplo, esta lista no incluye DeployAsIisApp o SkipExtraFilesOnServer, que son parámetros que funcionan desde Team City Build.

También esta pregunta relacionada (posiblemente duplicada): Parámetros válidos para MSDeploy a través de MSBuild que contiene algunos argumentos, pero aún no es una lista definitiva.


En primer lugar, la respuesta corta es que no puede encontrar la lista completa. MSBuild no tiene una lista completa de parámetros que puede elegir ya que puede enviar cualquier parámetro que desee. Es un medio de comunicación entre el llamador de MSBuild y el autor del script de compilación de MSBuild (un archivo vs sln o csproj, por ejemplo).

Si el script de compilación usa el parámetro que se usa, de lo contrario se ignora.

Así que esta es una llamada válida a msbuild:

msbuild /p:<anything>=<anything>

En segundo lugar, no debería enviar parámetros a msbuild desde teamcity usando las opciones de comando / p :. En su lugar, establezca la configuración o las propiedades del sistema en la configuración de compilación de teamcity. Se pasarán a msbuild automáticamente como parámetros.


Estos son los parámetros utilizados por Visual Studio Team Services al crear una definición de compilación ASP.NET (Vista previa):

/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)//"

También se puede extrapolar de los bloques <PropertyGroup /> definidos en estos ejemplos:

https://msdn.microsoft.com/en-us/library/ff398069(v=vs.110).aspx

De este ejemplo:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <WebPublishMethod>Package</WebPublishMethod> <LaunchASiteUrlAfterPublish>False</LaunchASiteUrlAfterPublish> <SiteUrlToLaunchAfterPublish /> <MSDeployServiceURL /> <DeployIisAppPath /> <RemoteSitePhysicalPath /> <AllowUntrustedCertificate>False</AllowUntrustedCertificate> <SkipExtraFilesOnServer>True</SkipExtraFilesOnServer> <DeployAsIisApp>True</DeployAsIisApp> <MSDeployPublishMethod>WMSVC</MSDeployPublishMethod> <UserName /> <SavePWD>True</SavePWD> <PublishDatabaseSettings> <!— this section omitted to keep the example short --> </PublishDatabaseSettings> </PropertyGroup> </Project>

Podrías derivar la siguiente lista:

  • WebPublishMethod
  • LaunchASiteUrlAfterPublish
  • SiteUrlToLaunchAfterPublish
  • MSDeployServiceURL
  • DeployIisAppPath
  • RemoteSitePhysicalPath
  • Permitir certificado no confiable
  • SkipExtraFilesOnServer
  • DeployAsIisApp
  • MSDeployPublishMethod
  • Nombre de usuario
  • SavePWD
  • PublishDatabaseSettings