Ejercicio: hacer referencia al paquete desde la aplicación

Completado

En esta unidad, obtendrá el nuevo código de Tailspin.SpaceGame.Web con las clases de modelo quitadas. En lugar de hacer referencia directamente a los modelos, el código hará referencia a ellos desde el paquete que creó en la unidad anterior.

Esta es una lista de los pasos:

  • Obtener el código nuevo de una rama del repositorio Tailspin.SpaceGame.Web original.
  • Hacer referencia al paquete Modelos nuevo, versión 1.0.0.
  • Cambiar la canalización de compilación para buscar este paquete en la fuente de Azure Artifacts.
  • Observar que la canalización ha compilado correctamente la aplicación.

Captura de la rama de GitHub

Capture la rama models-package de GitHub, y restáurela o cambie a esa rama.

Esta rama contiene el proyecto Space Game con el que se ha trabajado en los módulos anteriores, pero se ha quitado el directorio Modelos.

  1. Cambie a la copia de Visual Studio Code en la que se muestra el proyecto Tailspin.SpaceGame.Web.

  2. Desde el terminal, para capturar una rama denominada models-package, ejecute los comandos git siguientes desde el repositorio de Microsoft. Después, cambie a esa rama.

    git fetch upstream models-package
    git checkout -B models-package upstream/models-package
    

    El formato de estos comandos permite obtener el código de inicio del repositorio de Microsoft en GitHub, conocido como upstream. En resumen, va a insertar esta rama en el repositorio de GitHub, conocido como origin.

  3. Como paso opcional, compruebe que el directorio Modelos ya no existe en el explorador de archivos. En su lugar, verá Controladores, Vistas y otros directorios.

Hacer referencia al paquete Modelos

  1. Abra el archivo Tailspin.SpaceGame.Web.csproj y agregue el elemento ItemGroup siguiente:

    <ItemGroup>
      <PackageReference Include="Tailspin.SpaceGame.Web.Models" Version="1.0.0" />
    </ItemGroup>
    

    Asegúrese de situar el elemento ItemGroup dentro del nodo Project. El archivo debe tener un aspecto similar a este:

    <Project Sdk="Microsoft.NET.Sdk.Web">
    
      <PropertyGroup>
        <TargetFramework>net6.0</TargetFramework>
        <ProjectGuid>{A0C4E31E-AC75-4F39-9F59-0AA19D9B8F46}</ProjectGuid>
      </PropertyGroup>
    
      <ItemGroup>
        <PackageReference Include="Tailspin.SpaceGame.Web.Models" Version="1.0.0" />
      </ItemGroup>
    
      <ItemGroup>
        <Folder Include="wwwroot\images\avatars\" />
      </ItemGroup>
    </Project>
    
  2. Modifique la versión, “1.0.0”, para que incluya el prefijo de versión preliminar que se generó durante el proceso de compilación. Veamos un ejemplo:

    <PackageReference Include="Tailspin.SpaceGame.Web.Models" Version="1.0.0-CI-20200610-165738" />
    

    Esto hace referencia al paquete Tailspin.SpaceGame.Web.Models que creó en Azure Artifacts. Fíjese en el número de versión, 1.0.0, seguido del sufijo de versión preliminar. Esto coincide con la versión inicial que se ha publicado en Azure Artifacts en la unidad anterior.

  3. Guarde el archivo.

    Nota

    Cuando guarde el archivo, puede que Visual Studio Code le pida que restaure las dependencias. Seleccione el botón Restaurar para restaurar las dependencias.

Modificación de la configuración de canalización

La rama models-package proporciona un archivo azure-pipelines.yml inicial. Aquí, modificará la configuración de canalización para extraer el paquete Tailspin.SpaceGame.Web.Models de Azure Artifacts.

  1. En Visual Studio Code, abra azure-pipelines.yml.

  2. Modifique azure-pipelines.yml como se muestra aquí:

    trigger:
    - '*'
    
    pool:
      vmImage: 'ubuntu-20.04'
      demands:
      - npm
    
    variables:
      buildConfiguration: 'Release'
      wwwrootDir: 'Tailspin.SpaceGame.Web/wwwroot'
      dotnetSdkVersion: '6.x'
    
    steps:
    - task: UseDotNet@2
      displayName: 'Use .NET SDK $(dotnetSdkVersion)'
      inputs:
        version: '$(dotnetSdkVersion)'
    
    - task: NuGetToolInstaller@0
      inputs:
        versionSpec: '5.9.1'
    
    - task: Npm@1
      displayName: 'Run npm install'
      inputs:
        verbose: false
    
    - script: './node_modules/.bin/node-sass $(wwwrootDir) --output $(wwwrootDir)'
      displayName: 'Compile Sass assets'
    
    - task: gulp@1
      displayName: 'Run gulp tasks'
    
    - script: 'echo "$(Build.DefinitionName), $(Build.BuildId), $(Build.BuildNumber)" > buildinfo.txt'
      displayName: 'Write build info'
      workingDirectory: $(wwwrootDir)
    
    - task: NuGetCommand@2
      displayName: 'Restore project dependencies'
      inputs:
        command: 'restore'
        restoreSolution: '**/*.sln'
        feedsToUse: 'select'
        vstsFeed: '$(System.TeamProject)/Tailspin.SpaceGame.Web.Models'
    
    - task: DotNetCoreCLI@2
      displayName: 'Build the project - $(buildConfiguration)'
      inputs:
        command: 'build'
        arguments: '--no-restore --configuration $(buildConfiguration)'
        projects: '**/*.csproj'
    
    - task: DotNetCoreCLI@2
      displayName: 'Publish the project - $(buildConfiguration)'
      inputs:
        command: 'publish'
        projects: '**/*.csproj'
        publishWebProjects: false
        arguments: '--no-build --configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory)/$(buildConfiguration)'
        zipAfterPublish: true
    
    - task: PublishBuildArtifacts@1
      displayName: 'Publish Artifact: drop'
      condition: succeeded()
    

    El código resaltado muestra el lugar donde la canalización restaura las dependencias y busca en la fuente de Azure Artifacts las dependencias que podrían estar allí.

  3. Almacene provisionalmente, confirme y envíe los cambios a GitHub.

    git add .
    git commit -m "Add reference to Models package"
    git push origin models-package
    
  4. Vaya a Azure Pipelines y observe cómo se compila la ejecución. La compilación recoge el paquete Modelos de Azure Artifacts y compila el proyecto correctamente.