es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Azure Pipeline – Proyecto de construcción en C# dependiente de otro proyecto en otro repositorio

Tengo la siguiente situación:
En AzureDevops:

Proyecto A –
Repositorio A


Module3/Module3.csproj
Module1/Module1.csproj
Module2/Module2.csproj
Module1/Module1.csproj
- Solution.sln

Proyecto B –
Repositorio B


ModuleCore/ModuleCore.csproj
-ModuleCore.sln

ModuleCore se agrega a varios proyectos.

En VisualStudio, cuando vamos a compilar proyecto A, agrego ModuleCore.csproj como proyecto existente y la compilación funciona.

He realizado varios pipelines en Azure DevOps, sin dependencia entre proyectos, pero con este estoy teniendo dificultades.

Cuando intento hacer la compilación, no encuentra ModuleCore y falla.

Mi tarea de compilación actual es:


- tarea: VSBuild@1
inputs:
solution: '$(solution)'
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.ArtifactStagingDirectory)"'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'

¿Cómo puedo compilar proyecto A y vincular proyecto B como una dependencia?
¿Existe alguna otra forma de realizar esta compilación en el pipeline?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para construir Proyecto A y vincular Proyecto B como una dependencia en el pipeline de Azure DevOps, puedes seguir estos pasos:

    1. Agrega una referencia a ModuleCore en Proyecto A.
    2. En el pipeline, agrega una tarea para restaurar los paquetes de NuGet:

      - task: NuGetCommand@2
       inputs:
         command: 'restore'
         restoreSolution: '**/*.sln'
      

      Esta tarea restaurará los paquetes de NuGet que se necesiten en la solución.

    3. Agrega una tarea para construir Proyecto B antes de construir Proyecto A. Esto asegurará que ModuleCore esté disponible al construir Proyecto A.

      - task: VSBuild@1
       inputs:
         solution: 'RepositoryB/ModuleCore.sln'
         platform: '$(buildPlatform)'
         configuration: '$(buildConfiguration)'
      

    4. Por último, agrega una tarea para construir Proyecto A:
      - task: VSBuild@1
       inputs:
         solution: 'RepositoryA/Solution.sln'
         msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.ArtifactStagingDirectory)"'
         platform: '$(buildPlatform)'
         configuration: '$(buildConfiguration)'
      

      Esta tarea especifica el archivo Solution.sln en RepositoryA y los argumentos de MSBuild necesarios. Construirá Proyecto A después de que se haya construido Proyecto B.

    Además de este enfoque, también puedes utilizar el archivo YAML de Azure Pipelines para definir tu pipeline. Esto proporcionará más flexibilidad y control sobre tus procesos de construcción y despliegue. Por ejemplo, puedes utilizar la palabra clave dependsOn para especificar dependencias entre tareas o agregar tareas adicionales para pruebas, despliegue u otros procesos.

Comments are closed.