Exercício – referenciar o pacote a partir da aplicação

Concluído

Nesta unidade, você receberá o novo código Tailspin.SpaceGame.Web que tem as classes de modelo removidas. Em vez de referenciar diretamente os modelos, o código irá referenciá-los a partir do pacote que criou na unidade anterior.

Aqui está uma lista das etapas:

  • Obter o novo código a partir de um ramo do repositório original Tailspin.SpaceGame.Web.
  • Referenciar o novo pacote Modelos, versão 1.0.0.
  • Para procurar este pacote no feed de Artefatos do Azure, altere o pipeline de compilação.
  • Observe o pipeline criar o aplicativo com êxito.

Obter o ramo do GitHub

Buscar a models-package ramificação no GitHub e fazer check-out, ou alternar para, essa ramificação.

Este ramo contém o projeto Space Game com o qual trabalhou nos módulos anteriores, mas o diretório Modelos foi removido.

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

  2. No terminal, para buscar uma ramificação nomeada models-package no repositório da Microsoft, execute os seguintes git comandos. Em seguida, mude para esse ramo.

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

    O formato desses comandos permite que você obtenha o código inicial do repositório da Microsoft no GitHub, conhecido como upstream. Em breve, irá enviar este ramo para o seu repositório do GitHub, conhecido como origin.

  3. Como passo opcional, certifique-se de que o diretório Modelos já não existe no explorador de ficheiros. Em vez disso, você deve ter controladores, exibições e outros diretórios.

Referenciar o pacote Modelos

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

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

    Certifique-se de colocar o ItemGroup dentro do Project nó. O seu ficheiro deve ser semelhante 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 a versão, "1.0.0", para incluir o prefixo de pré-lançamento que foi gerado durante o processo de compilação. Eis um exemplo:

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

    Isto referencia o pacote Tailspin.SpaceGame.Web.Models que criou nos Artefactos do Azure. Tenha em atenção o número da versão, 1.0.0, e o sufixo de pré-lançamento. Isso corresponde à versão inicial que você publicou no Azure Artifacts na unidade anterior.

  3. Guarde o ficheiro.

    Nota

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

Modificar a configuração do pipeline

A models-package ramificação fornece um arquivo azure-pipelines.yml inicial. Aqui, você modificará a configuração do pipeline para extrair o pacote Tailspin.SpaceGame.Web.Models dos Artefatos do Azure.

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

  2. Modifique azure-pipelines.yml como 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 onde o pipeline restaura dependências e procura no feed de Artefatos do Azure as dependências que podem estar lá.

  3. Teste, consolide e envie as suas alterações no GitHub.

    git add .
    git commit -m "Add reference to Models package"
    git push origin models-package
    
  4. Vá para Azure Pipelines e veja a compilação ser executada. A compilação seleciona o pacote Modelos dos Artefactos do Azure e cria o projeto com êxito.