Exercício – Faça referência ao pacote usando o aplicativo

Concluído

Nesta unidade, você obterá o novo código Tailspin.SpaceGame.Web que tem as classes de modelo removidas. Em vez de fazer referência diretamente aos modelos, o código fará referência a eles do pacote criado na unidade anterior.

Aqui está uma lista das etapas:

  • Obtenha o novo código de um branch do repositório Tailspin.SpaceGame.Web original.
  • Faça referência ao novo pacote de Modelos, versão 1.0.0.
  • Para procurar esse pacote no feed do Azure Artifacts, altere o pipeline de build.
  • Assista ao pipeline compilar o aplicativo com êxito.

Buscar o branch do GitHub

Busque o branch models-package do GitHub e faça check-out dele ou mude para ele.

Este branch contém o projeto Space Game com que você trabalhou nos módulos anteriores, mas o diretório Modelos foi removido.

  1. Alterne para a cópia do Visual Studio Code que mostra o projeto Tailspin.SpaceGame.Web.

  2. No terminal, para buscar um Branch chamado models-package no repositório Microsoft, execute os comandos git a seguir. Então alterne para esse branch.

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

    O formato desses comandos permite obter o código inicial do repositório GitHub da Microsoft, conhecido como upstream. Em breve, você efetuará push desse branch para seu repositório do GitHub, conhecido como origin.

  3. Como uma etapa opcional, verifique se o diretório Modelos não existe mais no Explorador de Arquivos. Em vez disso, você verá Controladores, Exibições e outros diretórios.

Fazer referência ao pacote de Modelos

  1. Abra o arquivo Tailspin.SpaceGame.Web.csproj e adicione o seguinte ItemGroup:

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

    Coloque o ItemGroup dentro do nó Project. O arquivo deve ser parecido com 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 a versão "1.0.0" para incluir o prefixo de pré-lançamento gerado durante o processo de build. Aqui está um exemplo:

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

    Isso faz referência ao pacote Tailspin.SpaceGame.Web.Models que você criou no Azure Artifacts. Observe o número de versão, 1.0.0, mais o sufixo de pré-lançamento. Isso corresponde à versão inicial que você publicou no Azure Artifacts na unidade anterior.

  3. Salve o arquivo.

    Observação

    Quando você salva o arquivo, o Visual Studio Code pode solicitar que você restaure as dependências. Selecione o botão Restaurar para restaurar as dependências.

Modificar a configuração do pipeline

O branch models-package fornece o arquivo inicial azure-pipelines.yml. Aqui, você modifica a configuração de pipeline para efetuar pull do pacote Tailspin.SpaceGame.Web.Models do Azure Artifacts.

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

  2. Modifique azure-pipelines.yml conforme mostrado aqui:

    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()
    

    O código realçado mostra em que local o pipeline restaura as dependências e examina seu feed do Azure Artifacts para as dependências que pode haver lá.

  3. Prepare, confirme e envie suas alterações por push para o GitHub.

    git add .
    git commit -m "Add reference to Models package"
    git push origin models-package
    
  4. Acesse o Azure Pipelines e assista à execução do build. O build pega seu pacote de modelos do Azure Artifacts e compila o projeto com êxito.