the support not tfs msbuild release publish msdeploy

tfs - support - publish msbuild



Team Build: Publica localmente usando MSDeploy (3)

Estoy empezando con la funcionalidad de creación de equipos y estoy encontrando la gran cantidad de cosas necesarias para hacer algo bastante simple y abrumador. Mi configuración en este momento es una solución con una aplicación web, una aplicación de ensamblaje y una aplicación de prueba. La aplicación web tiene una configuración de PublishProfile que se publica a través del sistema de archivos.

Tengo una configuración de definición de compilación TFS que actualmente construye la solución completa todas las noches y la coloca en un recurso compartido de red como copia de seguridad de compilaciones antiguas. Todo lo que quiero hacer ahora es tener PublishProfile. Ya configuré la aplicación web para mí. Estoy seguro de que esto es realmente simple, pero he estado jugando con los comandos de MSBuild durante todo un día sin suerte. ¡Ayuda!


La capacidad de publicar sitios web, configurar IIS y cambiar el esquema de inserción para el ciclo DEV-> QA-> RELEASE ha requerido una configuración personalizada para imitar la publicación o el código personalizado donde están implicadas las configuraciones de IIS.

A partir de Visual Studio 2013.2, Microsoft ha agregado un producto de terceros que administra la implementación de sitios web, cambios de configuración y despliegue de base de datos con flujo de trabajo de Windows y sería la solución recomendada para automatizar la implementación desde la creación de TFS.

Más información se puede encontrar aquí:

http://www.visualstudio.com/en-us/explore/release-management-vs.aspx


Lamentablemente, el uso compartido del perfil de publicación no se admite ni se implementa en MSBuild. La lógica para publicar desde el perfil está contenida en VS en sí. Afortunadamente, el perfil no contiene mucha información, por lo que hay formas de lograr lo que estás buscando. Nuestros objetivos no son específicamente compatibles con los mismos pasos seguidos por el diálogo de publicación, pero para lograr el mismo resultado de la creación del equipo tiene dos opciones, resumiré ambas aquí.

Cuando configura su definición de Team Build para implementar, debe ingresar algunos valores para MSBuild Arguments para el proceso de compilación. Ver imagen a continuación donde he resaltado esto.

Opción 1: Pase los siguientes argumentos:

/p:DeployOnBuild=true;DeployTarget=PipelinePreDeployCopyAllFilesToOneFolder;PackageTempRootDir="//sayedha-w500/BuildDrops/Publish";AutoParameterizationWebConfigConnectionStrings=false

Déjame explicar estos parámetros un poco, mostrarte el resultado y luego explicar la siguiente opción. DeployOnBuild=true : Esto le dice al proyecto que ejecute los DeployTarget definidos en la propiedad DeployTarget .

DeployTarget=PipelinePreDeployCopyAllFilesToOneFolder : Esto especifica el destino DeployTarget.

PackageTempRootDir="//sayedha-w500/BuildDrops/Publish" : Esto especifica la ubicación donde se escribirán los archivos del paquete. Esta es la ubicación donde se escriben los archivos antes de que se empaqueten.

AutoParameterizationWebConfigConnectionStrings=false : Esto le dice a la AutoParameterizationWebConfigConnectionStrings=false publicación en la web (WPP) que no parametrice las cadenas de conexión en el archivo web.config. Si no especifica esto, sus valores de cadena de conexión serán reemplazados por marcadores de posición como $ (ReplacableToken_dummyConStr-Web.config Connection String_0)

Después de hacer esto, puede iniciar una compilación, luego dentro de la ubicación PackageTempRootDir encontrará una carpeta PackageTmp y esta contiene el contenido que está buscando.

Opción 2: Entonces, para la opción anterior, probablemente haya notado que crea una carpeta llamada PackageTmp y, si no quiere eso, puede usar las siguientes opciones.

/p:DeployOnBuild=true;DeployTarget=PipelinePreDeployCopyAllFilesToOneFolder;_PackageTempDir="//sayedha-w500/BuildDrops/Publish";AutoParameterizationWebConfigConnectionStrings=false

La diferencia aquí es que en lugar de PackageTempRootDir pasaría en _PackageTempDir . La razón por la que no sugiero que para empezar es porque las propiedades de MSBuild que comienzan con _ significan que la propiedad es esencialmente "interna" en el sentido de que en una versión futura puede significar algo más o no existir en absoluto. Entonces, utilícelo bajo su propio riesgo.

Opción 3

Con todo lo dicho, podrías usar la compilación para empacar tu web. Si quieres hacer esto, utiliza los siguientes argumentos.

/p:DeployOnBuild=true;DeployTarget=Package

Cuando hagas esto en la carpeta desplegable de tu compilación, encontrarás la carpeta _PublishedWebsites como lo harías normalmente, y dentro de eso habrá una carpeta {ProjectName} _Package donde {ProjectName} es el nombre del proyecto. Esta carpeta contendrá el paquete, el archivo .cmd, el archivo de parámetros y un par de otros. Puede usar estos archivos para implementar su web.

Espero que no haya información sobre carga.