¿Dónde debo almacenar los objetivos comunes para las formaciones de equipo?
-
03-07-2019 - |
Pregunta
Estoy intentando configurar un archivo common.targets con algunos objetivos msbuild comunes que quiero usar en las compilaciones de mi equipo y, por lo tanto, importar en mis archivos TFSBuild.proj. Me pregunto cuál es la mejor manera de lograr esto? ¿Debo almacenar common.targets justo al lado de cada archivo TFSBuild.proj y, por lo tanto, tener duplicados del archivo de objetivos para cada equipo o hay alguna otra forma? Preferiría no colocar el archivo de objetivos en cada una de las máquinas de compilación.
Solución
Team Build tiene una fase de arranque antes de que se invoque TFSBuild.proj en el que solo se descargue TFSBuild.proj y otros archivos en el mismo directorio del control de origen. Por lo tanto, si desea que su archivo de objetivos esté bajo el control de código fuente, debe colocarlo en la misma ubicación que TFSBuild.proj
Más detalles en esta respuesta
Nunca lo he intentado, pero es posible que pueda colocar el archivo de objetivos en un recurso compartido de red e importarlo mediante un recurso compartido unc. Algo como
<Import Project="\\anothermachine\share\something.targets"/>
Pero eso requeriría que la cuenta de compilación y todas las personas que ejecutan compilaciones de escritorio tengan acceso a ese recurso compartido de red.
Otros consejos
Póngalo en una ubicación común que le guste en el control de código fuente. Antes de usar los objetivos, obtenga un archivo TFSBuild.proj como este:
<PropertyGroup>
<!--Path to the TFS Command Line (used for checkin and out)-->
<TxTf>"C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\tf"</TxTf>
<WorkingDirectory>C:\YourPathHere<WorkingDirectory>
<CustomProjTFSDir>"$/YourProj/YourCustomProjPath"</CustomProjTFSDir>
</PropertyGroup>
<Exec WorkingDirectory="$(WorkingDirectory)"
Command="$(TxTf) get $(CustomProjTFSDir)"/>
La clave para este trabajo es configurar un área de trabajo para el usuario del agente de compilación que apunta a tus cosas personalizadas. Este directorio NO debe estar en el mismo espacio que sus compilaciones normales.
Vaccano
El objetivo de un archivo .targets común es reducir la duplicación de sus scripts. Si tiene varias copias de este archivo bajo el control de código fuente, ¿qué sucede cuando necesita cambiarlas (para actualizar una ruta .exe tal vez)? Personalmente, prefiero una ubicación separada para los archivos comunes que cualquier / todos los demás scripts de compilación pueden hacer referencia. El único inconveniente de esto es que probablemente esté codificando la ruta de acceso a este archivo.
Puede almacenarlos junto con los objetivos de MS en $ Volume \ Archivos de programa \ MSBuild. La ventaja de hacer esto es que puede crear una ruta relativa utilizando los metadatos conocidos " $ (MSBuildExtensionsPath) \ Path \ To \ Your \ Targets "