Ćwiczenie — Tworzenie odwołania do pakietu w aplikacji

Ukończone

W tej lekcji uzyskasz nowy kod Tailspin.SpaceGame.Web , który ma usunięte klasy modelu. Zamiast bezpośrednio odwoływać się do modeli, kod będzie odwoływać się do nich z pakietu utworzonego w poprzednim module.

Oto lista kroków:

  • Pobierz nowy kod z gałęzi oryginalnego repozytorium Tailspin.SpaceGame.Web.
  • Utwórz odwołanie do nowego pakietu Models w wersji 1.0.0.
  • Aby wyszukać ten pakiet w kanale informacyjnym usługi Azure Artifacts, zmień potok kompilacji.
  • Zobacz, jak potok pomyślnie skompiluje aplikację.

Pobieranie gałęzi z repozytorium GitHub

Pobierz models-package gałąź z usługi GitHub i wyewidencjonuj lub przełącz się do tej gałęzi.

Zawiera ona projekt Space Game, nad którym pracowaliśmy w poprzednich modułach, ale katalog Models został usunięty.

  1. Przejdź do kopii programu Visual Studio Code, która pokazuje projekt Tailspin.SpaceGame.Web .

  2. W terminalu, aby pobrać gałąź o nazwie models-package z repozytorium Firmy Microsoft, uruchom następujące git polecenia. Następnie przejdź do tej gałęzi.

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

    Format tych poleceń umożliwia pobranie kodu początkowego z repozytorium Firmy Microsoft w witrynie GitHub znanej jako upstream. Wkrótce wypchniesz tę gałąź do repozytorium GitHub o nazwie origin.

  3. Opcjonalnie możesz się upewnić, że katalog Models nie istnieje już w eksploratorze plików. Zamiast tego powinny istnieć kontrolery, widoki i inne katalogi.

Tworzenie odwołania do pakietu Models

  1. Otwórz plik Tailspin.SpaceGame.Web.csproj i dodaj następujący kodItemGroup:

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

    Pamiętaj, aby umieścić ItemGroup wewnątrz węzła Project . Plik powinien wyglądać podobnie do następującego:

    <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. Zmodyfikuj wersję "1.0.0", aby uwzględnić prefiks wersji wstępnej wygenerowany podczas procesu kompilacji. Oto przykład:

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

    Jest to odwołanie do pakietu Tailspin.SpaceGame.Web.Models utworzonego w usłudze Azure Artifacts. Zwróć uwagę, że numer wersji to 1.0.0 oraz sufiks wersji wstępnej. Jest to zgodne z początkową wersją opublikowaną w usłudze Azure Artifacts w poprzedniej lekcji.

  3. Zapisz plik.

    Uwaga

    Podczas zapisywania pliku program Visual Studio Code może poprosić o przywrócenie zależności. Wybierz przycisk Przywróć, aby przywrócić zależności.

Modyfikowanie konfiguracji potoku

Gałąź models-package zawiera początkowy plik azure-pipelines.yml . W tym miejscu zmodyfikujesz konfigurację potoku, aby ściągnąć pakiet Tailspin.SpaceGame.Web.Models z usługi Azure Artifacts.

  1. W programie Visual Studio Code otwórz plik azure-pipelines.yml.

  2. Zmodyfikuj plik azure-pipelines.yml , jak pokazano poniżej:

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

    Wyróżniony kod pokazuje, gdzie potok przywraca zależności i wyszukuje źródło danych usługi Azure Artifacts dla zależności, które mogą tam znajdować się.

  3. Przygotuj, zatwierdź i wypchnij zmiany do usługi GitHub.

    git add .
    git commit -m "Add reference to Models package"
    git push origin models-package
    
  4. Przejdź do usługi Azure Pipelines i obejrzyj przebieg kompilacji. Podczas kompilacji pobierany jest pakiet Models z usługi Azure Artifacts, a projekt zostaje pomyślnie skompilowany.