練習 - 從應用程式參考套件

已完成

在本單元中,您將會取得已移除模型類別的新 Tailspin.SpaceGame.Web 程式碼。 程式碼不會直接參考模型,而是從您在上一個單元中建立的套件參考這些模型。

以下列出步驟:

  • 從原始 Tailspin.SpaceGame.Web 存放庫的分支取得新的程式碼。
  • 參考新的模型套件 1.0.0 版。
  • 若要在您的 Azure Artifacts 摘要中尋找此套件,請變更組建管線。
  • 監看管線已成功建置應用程式。

從 GitHub 擷取分支

從 GitHub 擷取 models-package 分支,並簽出或切換至該分支。

此分支包含您在先前課程模組中使用的 Space Game 專案,但已移除 Models 目錄。

  1. 切換至顯示 Tailspin.SpaceGame.Web 專案的 Visual Studio Code 複本。

  2. 從終端機中,若要從 Microsoft 存放庫提取名為 models-package 的分支,請執行下列 git 命令。 然後,切換至該分支。

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

    這些命令的格式可讓您從 GitHub 上的 Microsoft 存放庫 (稱為 upstream) 取得起始程式碼。 不久後,您就會將此分支推送至自己的 GitHub 存放庫,名為 origin

  3. 您可以選擇性地驗證 Models 目錄是否不再存在於檔案總管中。 相反地,您應該有 ControllersViews 和其他目錄。

參考模型套件

  1. 開啟 Tailspin.SpaceGame.Web.csproj 檔案,然後新增下列 ItemGroup

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

    請務必將 ItemGroup 放置在 Project 節點內。 您的檔案應該如下所示:

    <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. 修改版本 "1.0.0",以包含在建置過程中產生的發行前版本首碼。 以下是範例:

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

    這會參考您已在 Azure Artifacts 中建立的 Tailspin.SpaceGame.Web.Models 套件。 請注意,版本號碼 1.0.0 會加上發行前版本尾碼。 這符合您在上一個單元中發佈至 Azure Artifacts 的初始版本。

  3. 儲存檔案。

    注意

    當您儲存檔案時,Visual Studio Code 可能會要求您還原相依性。 選取 [還原] 按鈕以還原相依性。

修改管線設定

models-package 分支提供初始 azure-pipelines.yml 檔案。 在這裡,您將會修改管線組態,以從 Azure Artifacts 提取 Tailspin.SpaceGame.Web.Models 套件。

  1. 從 Visual Studio Code,開啟 azure-pipelines.yml

  2. 修改 azure-pipelines.yml,如下所示:

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

    醒目提示的程式碼會顯示管線還原相依性的位置,並在您的 Azure Artifacts 摘要中尋找可能在那裡的相依性。

  3. 暫存、認可和推送您對 GitHub 的變更。

    git add .
    git commit -m "Add reference to Models package"
    git push origin models-package
    
  4. 前往 Azure Pipelines 並監看組建執行。 建置會從 Azure Artifacts 挑選您的模型套件,並成功建置專案。