Esercizio - Fare riferimento al pacchetto dall'applicazione

Completato

In questa unità si recupererà il nuovo codice di Tailspin.SpaceGame.Web in cui le classi del modello sono state rimosse. Anziché fare riferimento direttamente ai modelli, il codice farà riferimento a questi dal pacchetto creato nell'unità precedente.

Ecco un elenco dei passaggi:

  • Ottenere il nuovo codice da un ramo del repository Tailspin.SpaceGame.Web originale.
  • Fare riferimento al nuovo pacchetto Models versione 1.0.0.
  • Per cercare il pacchetto nel feed di Azure Artifacts, modificare la pipeline di compilazione.
  • Osservare la corretta compilazione dell'app da parte della pipeline.

Recuperare il ramo da GitHub

Recuperare il ramo models-package da GitHub ed eseguire il checkout o passare a esso.

Questo ramo contiene il progetto Space Game usato nei moduli precedenti, ma la directory Models è stata rimossa.

  1. Passare alla copia di Visual Studio Code che mostra il progetto Tailspin.SpaceGame.Web.

  2. Per recuperare un ramo denominato models-package dal repository Microsoft, eseguire i comandi giti seguenti nel terminale. Passare quindi a tale ramo.

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

    Il formato di questi comandi consente di ottenere il codice di avvio dal repository Microsoft in GitHub, noto come upstream. In breve, si eseguirà il push di questo ramo al repository GitHub personale, noto come origin.

  3. Verificare che la directory Models non esista più in Esplora file (passaggio facoltativo). Dovrebbero invece venire visualizzati Controller, Visualizzazioni e altre directory.

Fare riferimento al pacchetto Models

  1. Aprire il file Tailspin.SpaceGame.Web.csproj, aggiungere l'elemento ItemGroup seguente:

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

    Assicurarsi di posizionare ItemGroup all'interno del nodo Project. Il file dovrebbe presentarsi in modo simile al seguente:

    <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. Modificare la versione "1.0.0" in modo da includere il prefisso della versione non definitiva che è stato generato durante il processo di compilazione. Ecco un esempio:

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

    In questo caso si fa riferimento al pacchetto Tailspin.SpaceGame.Web.Models creato in Azure Artifacts. Si noti che il numero di versione, 1.0.0, più il suffisso della versione non definitiva, corrisponde alla versione iniziale pubblicata in Azure Artifacts nell'unità precedente.

  3. Salva il file.

    Nota

    Quando si salva il file, Visual Studio Code potrebbe richiedere di ripristinare le dipendenze. Selezionare il pulsante Ripristina per ripristinare le dipendenze.

Modificare la configurazione della pipeline

Il ramo models-package presenta un file azure-pipelines.yml iniziale. Qui, modificare la configurazione della pipeline per eseguire il pull del pacchetto Tailspin.SpaceGame.Web.Models da Azure Artifacts.

  1. In Visual Studio Code aprire azure-pipelines.yml.

  2. Modificare azure-pipelines.yml come illustrato di seguito:

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

    Il codice evidenziato mostra la posizione in cui la pipeline ripristina le dipendenze e cerca nel feed di Azure Artifacts le dipendenze che potrebbero essere presenti.

  3. Preparare le modifiche per il commit, eseguirne il commit e il push in GitHub.

    git add .
    git commit -m "Add reference to Models package"
    git push origin models-package
    
  4. Passare ad Azure Pipelines e osservare l'esecuzione della compilazione. La compilazione preleva il pacchetto Modelli da Azure Artifacts e compila correttamente il progetto.