Esercizio - Fare riferimento al pacchetto dall'applicazione

Completato

In questa unità viene visualizzato il nuovo codice Tailspin.SpaceGame.Web con le classi di modello rimosse. Anziché fare riferimento direttamente ai modelli, il codice fa riferimento ai modelli dal pacchetto che avete creato nell'unità precedente.

Ecco un elenco dei passaggi:

  • Ottieni il nuovo codice da un ramo del repository Tailspin.SpaceGame.Web originale.
  • Fare riferimento al nuovo pacchetto Models versione 1.0.0.
  • Per cercare questo 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. Dal terminale eseguire i comandi seguenti models-package per recuperare un ramo denominato git dal repository Microsoft. 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. Come passaggio facoltativo, verificare che la directory Models non esista più in Esplora file. Dovrebbero invece venire visualizzati Controller, Visualizzazioni e altre directory.

Fare riferimento al pacchetto Models

  1. Aprire il file Tailspin.SpaceGame.Web.csproj e aggiungere quanto segue ItemGroup:

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

    Assicurarsi di posizionare l'oggetto ItemGroup all'interno del Project nodo. Il file dovrebbe essere simile a questo esempio:

    <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 per includere il prefisso di versione preliminare generato durante il processo di compilazione. Ecco un esempio:

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

    Questa voce fa riferimento al pacchetto Tailspin.SpaceGame.Web.Models creato in Azure Artifacts. Nota il numero di versione 1.0.0, più il suffisso di versione preliminare. Questo valore corrisponde alla versione iniziale pubblicata in Azure Artifacts nell'unità precedente.

  3. Salvare il file.

    Annotazioni

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

Modificare la configurazione della pipeline

Il models-package ramo fornisce un file di azure-pipelines.yml iniziale. In questo caso si modifica 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 dove 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. Vai su Azure Pipelines e monitora l'esecuzione della compilazione. La compilazione preleva il pacchetto Models da Azure Artifacts e compila correttamente il progetto.