Esercizio - Fare riferimento al pacchetto dall'applicazione
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.
Passare alla copia di Visual Studio Code che mostra il progetto Tailspin.SpaceGame.Web.
Per recuperare un ramo denominato
models-package
dal repository Microsoft, eseguire i comandigit
i 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 comeorigin
.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
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 nodoProject
. 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>
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.
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.
In Visual Studio Code aprire azure-pipelines.yml.
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.
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
Passare ad Azure Pipelines e osservare l'esecuzione della compilazione. La compilazione preleva il pacchetto Modelli da Azure Artifacts e compila correttamente il progetto.