Controlar dónde ubica los binarios el sistema de compilación

El proceso de compilación predeterminado (tal como se define en DefaultTemplate.xaml) coloca los binarios que compila de todos los proyectos de código en un único directorio. Sin embargo, en algunos casos, es conveniente ordenar los binarios en una estructura de carpetas más específica y organizada.

Puede usar las técnicas de este tema para crear un proceso de compilación personalizado que coloque los binarios en una estructura de directorios que diseñe. También puede personalizar los procesos de compilación de maneras diferentes con los mismos principios. En este tema se explican las siguientes técnicas:

  • Personalizar el segmento de flujo de trabajo de Windows del proceso de compilación. Debe realizar cambios en este segmento para personalizar la mayoría de los aspectos del proceso de compilación, excepto la compilación y control de los binarios. Concretamente, en este tema se describe cómo realizar las tareas siguientes:

    • Modificar una copia de la plantilla predeterminada (DefaultTemplate.xaml) para crear un proceso de compilación personalizado.

    • Declarar los argumentos y usarlos para pasar datos en el flujo de trabajo.

    • Declarar variables y usarlas para recopilar datos y pasarlos en el flujo de trabajo.

    • Modificar la forma en que el flujo de trabajo usa la actividad MSBuild para llamar a MSBuild.

    • Descargar un archivo en el servidor de compilación y usar la actividad ConvertWorkspaceItem para poner ese archivo a disposición del proceso de compilación.

  • Personalizar el segmento de MSBuild del proceso de compilación. Al realizar cambios en este segmento, puede personalizar más eficazmente la forma en que se compilan y controlan los binarios. Concretamente, en este tema se describe cómo realizar las tareas siguientes:

    • Pasar argumentos a MSBuild y, a continuación, usarlos en los proyectos de código para cambiar la forma en que se controlan los binarios compilados.

    • Configurar una biblioteca de código común centralizada de sus propios elementos de MSBuild, como grupos o destinos de propiedades. Al configurar este tipo de biblioteca, permite al equipo reutilizar y modificar fácilmente las partes principales de la lógica del proceso de compilación.

Nota

En este tema se abordan tres tipos de proyectos de código: C#, C++ y Visual Basic. Sin embargo, es posible que pueda usar las técnicas para otros tipos de proyectos de código.

En este tema

  • Permisos necesarios

  • Dónde coloca el proceso de compilación predeterminado los archivos binarios compilados

  • Organizar los archivos binarios compilados mediante la lógica incrustada en cada proyecto de código

    • Información general del proceso

    • Información general de los pasos que se siguen

    • Crear la definición de compilación y la plantilla de proceso de compilación personalizada CustomOutputDirInline

    • Insertar la lógica de la carpeta de entrega en los proyectos de código

  • Organizar los archivos binarios compilados mediante la lógica que se mantiene en dos archivos centralizados

    • Información general del proceso

    • Información general de los pasos que se siguen

    • Crear archivos de código comunes de MSBuild que contienen la lógica de la carpeta de entrega

    • Crear la definición de compilación y la plantilla de proceso de compilación personalizada CustomOutputDirImport

    • Actualizar la definición de compilación OurTeamBuild

    • Importar la lógica de la carpeta de entrega a los proyectos de código

  • Pasos siguientes

Permisos necesarios

Para llevar a cabo los procedimientos que se muestran a continuación, debe tener los permisos siguientes establecidos en Permitir:

  • Editar definición de compilación.

  • Desproteger y Proteger los directorios de control de versiones pertinentes.

  • Poner compilaciones en cola.

Para obtener más información, vea Permisos de Team Foundation Server.

Dónde coloca el proceso de compilación predeterminado los archivos binarios compilados

Independientemente de cómo esté dividido su trabajo en los proyectos y soluciones de código, el proceso de compilación predeterminado coloca todos los archivos binarios compilados en un solo subdirectorio de la carpeta de entrega. Por ejemplo, podría tener las soluciones y proyectos de código siguientes:

  • SoluciónA

    • CPPWin32ConsoleApp (una aplicación de consola de Visual C++)

    • CSharpConsoleApp (una aplicación de consola de Visual C#)

  • SoluciónB

    • VBConsoleApp (una aplicación de consola de Visual Basic)

En el diagrama siguiente se muestra cómo y dónde MSBuild coloca los binarios después de haberlos compilado como parte del proceso que se especifica en DefaultTemplate.xaml.

Flujo predeterminado

Organizar los archivos binarios compilados mediante la lógica incrustada en cada proyecto de código

Puede especificar que los binarios compilados se coloquen en una estructura de subdirectorios que coincida con la estructura de las soluciones y proyectos de código.

Información general del proceso

En el diagrama siguiente se muestra en un nivel alto cómo puede implementar este tipo de proceso de compilación:

Flujo con lógica de salida personalizada incrustada

Información general de los pasos que se siguen

En resumen, puede realizar los pasos siguientes para crear este tipo de proceso de compilación personalizado basado en DefaultTemplate.xaml:

  • Paso 1 Definición de compilación y plantilla de proceso de compilación

    • Cree una definición de compilación (denominada, por ejemplo, OurTeamBuild). En la pestaña Proceso, base la definición de compilación en una nueva plantilla de proceso de compilación (denominada, por ejemplo, CustomOutputDirInline.xaml).

    • En CustomOutputDirInline.xaml, realice los pasos siguientes en la instancia de la actividad Run MSBuild for Project que compila el código:

      • Deshabilite la propiedad OutDir de la actividad Run MSBuild for Project; para ello, quite su valor para convertirla en una cadena vacía.

        Nota

        Si no realiza este cambio, la propiedad OutDir invalida cualquier lógica de la estructura de directorios personalizada que se implemente en el proyecto de código.

      • Recopile el valor de cadena que contiene la carpeta de entrega del agente de compilación a partir de la variable BinariesDirectory y páselo en un argumento de MSBuild (denominado, por ejemplo, TeamBuildOutDir).

  • Paso 2 Proyectos de código

    • En cada proyecto de código que compila OurTeamBuild, agregue el elemento apropiado (OutputPath u OutDir) para definir la estructura de subdirectorios que se creará en las carpetas de entrega.

En las subsecciones siguientes se explica en detalle cómo realizar estos pasos.

Crear la definición de compilación y la plantilla de proceso de compilación personalizada CustomOutputDirInline

Para colocar la base del proceso de compilación, cree una definición de compilación y básela en una nueva plantilla de proceso de compilación.

Para crear la definición de compilación y la plantilla de proceso de compilación

  1. Crear una definición de compilación.

    1. En la pestaña General, asigne a la definición de compilación un nombre (por ejemplo, OurTeamBuild).

    2. En la pestaña Proceso, agregue las soluciones que desea compilar.

      Para obtener más información, vea Crear una definición de compilación básica.

  2. En la pestaña Proceso de la definición de compilación OurTeamBuild, establezca la plantilla de proceso de compilación como una nueva plantilla de proceso de compilación denominada CustomOutputDirInline.xaml y basada en la plantilla predeterminada (DefaultTemplate.xaml).

    Para obtener más información, vea Crear y usar una plantilla de proceso de compilación personalizada.

  3. En el Explorador de control de código fuente, abra el proyecto de equipo y muestre la carpeta que contiene las plantillas de proceso de compilación.

    De forma predeterminada, este subdirectorio se denomina BuildProcessTemplates.

  4. Desproteja el archivo CustomOutputDirInline.xaml que creó anteriormente en este procedimiento y, a continuación, haga doble clic en él.

  5. En el diseñador de flujo de trabajo, busque la segunda instancia de la actividad Run MSBuild for Project, que se encuentra en la estructura siguiente:

    1. Secuencia (Sequence) >

    2. Ejecutar en el agente (AgentScope) >

    3. Intentar compilar, probar y asociar conjuntos de cambios y elementos de trabajo (TryCatch [Try]) >

    4. Secuencia (Sequence) >

    5. Compilar, probar y asociar conjuntos de cambios y elementos de trabajo (Parallel) >

    6. Intentar compilar y probar TryCatch [Try] >

    7. Compilar y probar Sequence >

    8. Configuración de For Each en BuildSettings.PlatformConfigurationsForEach [Body] >

    9. Compilar y probar configuración Sequence >

    10. Si BuildSettings.HasProjectsToBuild If [Then] >

    11. Para cada proyecto en BuildSettings.ProjectsToBuildForEach [Body] >

    12. Intentar compilar el proyecto TryCatch [Try] >

    13. Compilar el proyecto Sequence >

    14. Ejecutar MSBuild para el proyecto MSBuild

    Para obtener información sobre cómo navegar por esta estructura, vea Navegar en un flujo de trabajo de Windows complejo.

  6. Haga clic con el botón secundario en la actividad Run MSBuild for Project y, a continuación, haga clic en Propiedades.

  7. En el recuadro Propiedades, quite los datos del cuadro OutDir para establecer esta propiedad en una cadena vacía.

  8. En el recuadro Propiedades, establezca la propiedad CommandLineArguments en el valor siguiente:

    String.Format("/p:SkipInvalidConfigurations=true;TeamBuildOutDir=""{0}"" {1}",
    BinariesDirectory, MSBuildArguments)
    
  9. Guarde CustomOutputDirInline.xaml.

  10. En el Explorador de control de código fuente, proteja los cambios en este archivo.

Insertar la lógica de la carpeta de entrega en los proyectos de código

Ahora que ha creado la definición de compilación y la plantilla de proceso de compilación personalizada, debe insertar la lógica de la estructura de directorios en cada proyecto de código que este proceso compila.

Nota

Esta lógica no se puede insertar en el propio flujo de trabajo porque el flujo de trabajo DefaultTemplate.xaml no itera en cada proyecto ni lo ejecuta mediante el compilador de MSBuild. En su lugar, el flujo de trabajo llama a MSBuild una vez para compilar todas las soluciones y los proyectos.

Para insertar la lógica de la carpeta de entrega

  1. En el Explorador de control de código fuente, abra una solución que compila la definición de compilación OurTeamBuild.

  2. Agregue el elemento del directorio de salida necesario a cada proyecto de código de la solución. En los proyectos de código administrado, por ejemplo, Visual C# o Visual Basic, esta propiedad es OutputPath. En los proyectos de Visual C++, esta propiedad es OutDir. En cada proyecto de código de la solución, siga estos pasos:

    1. En el Explorador de soluciones, haga clic con el botón secundario en el proyecto. Si el comando Descargar el proyecto está disponible, haga clic en él.

    2. Haga clic con el botón secundario en el proyecto y, a continuación, haga clic en Editar nombreDeProyecto.

    3. Realice uno de estos pasos:

      • Si se trata de un proyecto de código administrado, como Visual C# o Visual Basic: agregue un elemento OutputPath. Debe colocar este elemento después del último elemento OutputPath que ya está en el proyecto de código, como se muestra en el ejemplo siguiente:

        <Project DefaultTargets="Build" xmlns="https://schemas.microsoft.com/developer/msbuild/2003 ...">
         ...
        <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86'">
         ...
         <OutputPath>bin\Debug\</OutputPath>
         ...
        </PropertyGroup>
        <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
         ...
         <OutputPath>bin\Release\</OutputPath>
         ...
        </PropertyGroup>
        
        <PropertyGroup Condition="$(TeamBuildOutDir) != '' ">
        <OutputPath>$(TeamBuildOutDir)\$(SolutionName)\$(MSBuildProjectName)\$(Configuration)</OutputPath>
        </PropertyGroup>
        
      • Si se trata de un proyecto de Visual C++: agregue un elemento OutDir. Debe colocar este elemento antes del elemento que importa Microsoft.Cpp.targets, como se muestra en el ejemplo siguiente:

        <Project DefaultTargets="Build" xmlns="https://schemas.microsoft.com/developer/msbuild/2003 ...">
        ...
        
        <PropertyGroup Condition="$(TeamBuildOutDir) != '' ">
         <OutDir>$(TeamBuildOutDir)\$(SolutionName)\$(MSBuildProjectName)\$(Configuration)\</OutDir>
        </PropertyGroup>
        
        <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
        </Project>
        
    4. Guarde el proyecto de código.

  3. En el Explorador de soluciones, haga clic con el botón secundario en la solución y, a continuación, haga clic en Proteger.

  4. Repita estos pasos para cada solución que OurTeamBuild compila.

Organizar los archivos binarios compilados mediante la lógica que se mantiene en dos archivos centralizados

Si tiene que mantener muchos proyectos de código, puede mejorar el proceso descrito en la sección anterior si mantiene los elementos OutputPath y OutDir en dos archivos compartidos. Si usa este enfoque, puede cambiar la estructura de directorios de la carpeta de entrega más fácilmente al modificar dos archivos centralizados, en lugar de modificar cada proyecto de código.

Información general del proceso

En el diagrama siguiente se muestra en un nivel alto cómo puede implementar este tipo de proceso de compilación:

Flujo con lógica de salida personalizada importada

Información general de los pasos que se siguen

En resumen, debe realizar los pasos siguientes para crear este tipo de proceso de compilación personalizado basado en DefaultTemplate.xaml:

  • En el Explorador de control de código fuente, cree un directorio (denominado, por ejemplo, $/OurTeam/BuildProcessMSBuild) para contener el código común de MSBuild. En este directorio, cree y almacene los archivos de MSBuild que definen la estructura de subdirectorios que se creará en las carpetas de entrega.

  • Paso 1 Definición de compilación y plantilla de proceso de compilación

    • Actualice la definición de compilación (denominada, por ejemplo, OurTeamBuild) siguiendo estos pasos:

      • En la pestaña Área de trabajo, asigne el directorio $/OurTeam/BuildProcessMSBuild.

      • En la pestaña Proceso, base la definición de compilación en una nueva plantilla de proceso de compilación (denominada, por ejemplo, CustomOutputDirImport.xaml).

    • En CustomOutputDirImport.xaml, siga estos pasos:

      • Declare LocalPathToMSBuildCode como una variable String cuyo ámbito sea la actividad Run On Agent.

      • Declare ServerPathToMSBuildCode como argumento.

        Después de agregar este argumento, debe modificar la definición de OurTeamBuild. En la pestaña Proceso, escriba $/OurTeam/BuildProcessMSBuild como valor de este parámetro del proceso de compilación.

      • En la actividad Run on Agent >, antes de la actividad de Try Compile, Test, and Associate Changesets and Work Items [Try], agregue una actividad ConvertWorkspaceItem para convertir el argumento ServerPathToMSBuildCode en una ruta de acceso local del agente de compilación que MSBuild pueda procesar. A continuación, coloque este valor en la variable LocalPathToMSBuildCode.

      • En la instancia de la actividad Run MSBuild for Project que compila el código, siga estos pasos:

        • Deshabilite la propiedad OutDir de la actividad Run MSBuild for Project; para ello, quite su valor para convertirla en una cadena vacía.

          Nota

          Si no realiza este cambio, la propiedad OutDir invalida cualquier lógica de la estructura de directorios personalizada que se implemente en el proyecto de código.

        • Recopile el valor de cadena que contiene la carpeta de entrega del agente de compilación a partir de la variable BinariesDirectory y pase ese valor a MSBuild como argumento (denominado, por ejemplo, TeamBuildOutDir).

        • Pase el valor de LocalPathToMSBuildCode a MSBuild como argumento (denominado, por ejemplo, CommonMSBuildCode).

  • Paso 2 Proyectos de código

    • En cada proyecto de código que OurTeamBuild compila, agregue un elemento <Import /> en la ubicación adecuada.

En las subsecciones siguientes se explica en detalle cómo seguir estos pasos.

Crear archivos de código comunes de MSBuild que contienen la lógica de la carpeta de entrega

Para este enfoque, empiece por crear un directorio y dos archivos de proyecto de MSBuild. Estos archivos contienen la lógica que define la estructura de subdirectorios que se creará en las carpetas de entrega.

Para crear los archivos

  1. En el Explorador de control de código fuente, realice uno de los pasos siguientes:

    • Busque el directorio donde se almacena el código común de MSBuild.

    • Cree un directorio para almacenar el código común de MSBuild y denomínelo, por ejemplo, $/OurTeam/BuildProcessMSBuild.

  2. Si el vínculo Sin asignar aparece junto a la etiqueta Ruta de acceso local en la parte superior del Explorador de control de código fuente, haga clic en el vínculo para asignar el directorio del servidor al directorio apropiado del área de trabajo local.

  3. Cree, guarde y proteja los archivos siguientes en $/OurTeam/BuildProcessMSBuild:

    • Un archivo que contiene la lógica de la carpeta de entrega para proyectos de código administrado, por ejemplo Visual C# o Visual Basic (denominado, por ejemplo, ManagedCodeProjectOutDir.targets).

      <Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
      <PropertyGroup Condition="$(TeamBuildOutDir) != '' ">
       <OutputPath>$(TeamBuildOutDir)\$(SolutionName)\$(MSBuildProjectName)\$(Configuration)</OutputPath>
      </PropertyGroup>
      </Project>
      
    • Un archivo que contiene la lógica de la carpeta de entrega para los proyectos de código de Visual C++ (denominado, por ejemplo, CPPCodeProjectOutDir.targets).

      <Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
      <PropertyGroup Condition="$(TeamBuildOutDir) != '' ">
       <OutDir>$(TeamBuildOutDir)\$(SolutionName)\$(MSBuildProjectName)\$(Configuration)\</OutDir>
      </PropertyGroup>
      </Project>
      

Crear la definición de compilación y la plantilla de proceso de compilación personalizada CustomOutputDirImport

Puede reutilizar la definición de compilación que creó anteriormente en este tema, denominada OurTeamBuild. La basará en una nueva plantilla de proceso de compilación y realizará ajustes adicionales.

Para crear la definición de compilación y la plantilla de proceso de compilación

  1. En Team Explorer, haga clic con el botón secundario en OurTeamBuild y, a continuación, haga clic en Editar.

  2. Haga clic en la pestaña Proceso y, a continuación, establezca la plantilla de proceso de compilación como una nueva plantilla de proceso de compilación denominada CustomOutputDirImport.xaml y basada en la plantilla predeterminada (DefaultTemplate.xaml).

    Para obtener más información, vea Crear y usar una plantilla de proceso de compilación personalizada.

  3. En el Explorador de control de código fuente, abra el proyecto de equipo y muestre la carpeta que contiene las plantillas de proceso de compilación. De forma predeterminada, el nombre de este subdirectorio es BuildProcessTemplates.

  4. Desproteja el archivo CustomOutputDirImport.xaml que creó anteriormente en este procedimiento y, a continuación, haga doble clic en él.

  5. En el diseñador de flujo de trabajo, busque la actividad Run on Agent, que se encuentra en la estructura siguiente:

    1. Secuencia (Sequence) >

    2. Ejecutar en el agente (AgentScope) >

    Para obtener información sobre cómo navegar por esta estructura, vea Navegar en un flujo de trabajo de Windows complejo.

  6. En la parte inferior de la ventana, haga clic en Argumentos.

  7. En el recuadro Argumentos, cree un argumento y denomínelo ServerPathToMSBuildCode.

  8. En el recuadro Propiedades, active la casilla IsRequired.

  9. En la parte inferior de la ventana, haga clic en Variables.

  10. En el recuadro Variables, declare una variable denominada LocalPathToMSBuildCode con un tipo de String y un ámbito de Run On Agent.

  11. Arrastre la actividad ConvertWorkspaceItem de la sección Actividades de Team Foundation Build del Cuadro de herramientas a la ubicación situada entre las actividades Initialize Workspace e If CreateLabel.

    Nota

    Si la sección de Actividades de Team Foundation Build no aparece en el Cuadro de herramientas, puede agregar manualmente esta sección desde el ensamblado Microsoft.TeamFoundation.Build.Workflow.dll. Para obtener más información, vea How to: Add Activities to the Toolbox.

  12. Haga clic con el botón secundario en la actividad ConvertWorkspaceItem y, a continuación, haga clic en Propiedades.

  13. En el recuadro Propiedades, establezca los siguientes valores de propiedad:

    • Nombre para mostrar: Get Local Path to MSBuild Code

    • Entrada: ServerPathToMSBuildCode

    • Resultado: LocalPathToMSBuildCode

    • Área de trabajo: Workspace

  14. Busque la segunda instancia de la actividad Run MSBuild for Project, que se encuentra en la estructura siguiente:

    1. Secuencia (Sequence) >

    2. Ejecutar en el agente (AgentScope) >

    3. Intentar compilar, probar y asociar conjuntos de cambios y elementos de trabajo (TryCatch [Try]) >

    4. Secuencia (Sequence) >

    5. Compilar, probar y asociar conjuntos de cambios y elementos de trabajo (Parallel) >

    6. Intentar compilar y probar TryCatch [Try] >

    7. Compilar y probar Sequence >

    8. Configuración de For Each en BuildSettings.PlatformConfigurationsForEach [Body] >

    9. Compilar y probar configuración Sequence >

    10. Si BuildSettings.HasProjectsToBuild If [Then] >

    11. Para cada proyecto en BuildSettings.ProjectsToBuildForEach [Body] >

    12. Intentar compilar el proyecto TryCatch [Try] >

    13. Compilar el proyecto Sequence >

    14. Ejecutar MSBuild para el proyecto MSBuild

    Para obtener información sobre cómo navegar por esta estructura, vea Navegar en un flujo de trabajo de Windows complejo.

  15. Haga clic con el botón secundario en la actividad Run MSBuild for Project y, a continuación, haga clic en Propiedades.

  16. En el recuadro Propiedades, quite los datos del cuadro OutDir para establecer esta propiedad en una cadena vacía.

  17. En el recuadro Propiedades, establezca la propiedad CommandLineArguments en el valor siguiente:

    String.Format("/p:SkipInvalidConfigurations=true;CommonMSBuildCode=""{0}"";TeamBuildOutDir=""{1}"" {2}",
    LocalPathToMSBuildCode, BinariesDirectory, MSBuildArguments)
    
  18. Guarde CustomOutputDirImport.xaml.

    En el Explorador de control de código fuente, proteja los cambios en este archivo.

Actualizar la definición de compilación OurTeamBuild

A continuación, debe actualizar los cambios a la definición de compilación OurTeamBuild.

Para actualizar la definición de compilación

  1. En Team Explorer, expanda el proyecto de equipo en el que está trabajando, expanda la carpeta Compilaciones, haga clic con el botón secundario en la definición de compilación OurTeamBuild y, a continuación, haga clic en Editar definición de compilación.

  2. Haga clic en la pestaña Área de trabajo y, a continuación, agregue una entrada con los valores siguientes:

    • Estado: activo

    • Carpeta de control de código fuente: $/OurTeam/BuildProcessMSBuild

    • Carpeta Agente de compilación: $(SourceDir)\BuildProcessMSBuild

  3. Haga clic en la pestaña Proceso y escriba $/OurTeam/BuildProcessMSBuild en el cuadro ServerPathToMSBuildCode.

  4. Guarde la definición de compilación.

Importar la lógica de la carpeta de entrega a los proyectos de código

Después de crear la definición de compilación y la plantilla de proceso de compilación personalizada, debe actualizar los proyectos de código para importar la lógica de la estructura de directorios.

Para importar la lógica de la carpeta de entrega

  1. En el Explorador de control de código fuente, haga doble clic en una solución que OurTeamBuild compila.

  2. En cada proyecto de código de la solución, siga estos pasos:

    1. En el Explorador de soluciones, haga clic con el botón secundario en el proyecto. Si el comando Descargar el proyecto está disponible, haga clic en él.

    2. Haga clic con el botón secundario en el proyecto y, a continuación, haga clic en Editar nombreDeProyecto.

    3. Realice uno de estos pasos:

      • Si se trata de un proyecto de código administrado como Visual C# o Visual Basic: agregue un elemento Import después del último elemento OutputPath que ya está en el proyecto de código, como se muestra en el ejemplo siguiente:

        <Project DefaultTargets="Build" xmlns="https://schemas.microsoft.com/developer/msbuild/2003 ...">
         ...
        <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86'">
         ...
         <OutputPath>bin\Debug\</OutputPath>
         ...
        </PropertyGroup>
        <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
         ...
         <OutputPath>bin\Release\</OutputPath>
         ...
        </PropertyGroup>
        
        <Import Condition=" $(CommonMSBuildCode) != ''" Project="$(CommonMSBuildCode)\ManagedCodeProjectOutDir.targets"/>
        
      • Si se trata de un proyecto de Visual C++: agregue un elemento Import antes del elemento que importa Microsoft.Cpp.targets, como se muestra en el ejemplo siguiente:

        <Project DefaultTargets="Build" xmlns="https://schemas.microsoft.com/developer/msbuild/2003 ...">
        ...
        <Import Condition=" $(CommonMSBuildCode) != ''" Project="$(CommonMSBuildCode)\CPPCodeProjectOutDir.targets"/>
        
        <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
        </Project>
        
    4. Guarde el proyecto de código.

  3. En el Explorador de soluciones, haga clic con el botón secundario en la solución y, a continuación, haga clic en Proteger.

  4. Repita los pasos anteriores para cada solución que OurTeamBuild compila.

Pasos siguientes

Para seguir, podría realizar las tareas siguientes:

  • Modifique la lógica de la carpeta de entrega. Para satisfacer los requisitos del equipo, puede modificar el contenido de los elementos OutputPath y OutDir proporcionados en las secciones anteriores.

  • Guarde el proyecto de código personalizado como plantilla. Si el equipo va a crear muchos proyectos de código, puede incluir automáticamente su lógica personalizada de MSBuild en los nuevos proyectos de código. En el Explorador de soluciones, haga clic en el proyecto de código, abra el menú Archivo y, a continuación, haga clic en Exportar plantilla.

Recursos adicionales

Puede encontrar información adicional en los temas siguientes del sitio web de Microsoft:

Vea también

Conceptos

Utilizar el Explorador de control de código fuente

Crear un área de trabajo para trabajar con el proyecto de equipo

Otros recursos

Referencia de MSBuild