練習 - 從應用程式參考套件
在本單元中,您將會取得已移除模型類別的新 Tailspin.SpaceGame.Web 程式碼。 程式碼不會直接參考模型,而是從您在上一個單元中建立的套件參考這些模型。
以下列出步驟:
- 從原始 Tailspin.SpaceGame.Web 存放庫的分支取得新的程式碼。
- 參考新的模型套件 1.0.0 版。
- 若要在您的 Azure Artifacts 摘要中尋找此套件,請變更組建管線。
- 監看管線已成功建置應用程式。
從 GitHub 擷取分支
從 GitHub 擷取 models-package
分支,並簽出或切換至該分支。
此分支包含您在先前課程模組中使用的 Space Game 專案,但已移除 Models 目錄。
切換至顯示 Tailspin.SpaceGame.Web 專案的 Visual Studio Code 複本。
從終端機中,若要從 Microsoft 存放庫提取名為
models-package
的分支,請執行下列git
命令。 然後,切換至該分支。git fetch upstream models-package git checkout -B models-package upstream/models-package
這些命令的格式可讓您從 GitHub 上的 Microsoft 存放庫 (稱為
upstream
) 取得起始程式碼。 不久後,您就會將此分支推送至自己的 GitHub 存放庫,名為origin
。您可以選擇性地驗證 Models 目錄是否不再存在於檔案總管中。 相反地,您應該有 Controllers、Views 和其他目錄。
參考模型套件
開啟 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>
修改版本 "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 的初始版本。
儲存檔案。
注意
當您儲存檔案時,Visual Studio Code 可能會要求您還原相依性。 選取 [還原] 按鈕以還原相依性。
修改管線設定
models-package
分支提供初始 azure-pipelines.yml 檔案。 在這裡,您將會修改管線組態,以從 Azure Artifacts 提取 Tailspin.SpaceGame.Web.Models 套件。
從 Visual Studio Code,開啟 azure-pipelines.yml。
修改 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 摘要中尋找可能在那裡的相依性。
暫存、認可和推送您對 GitHub 的變更。
git add . git commit -m "Add reference to Models package" git push origin models-package
前往 Azure Pipelines 並監看組建執行。 建置會從 Azure Artifacts 挑選您的模型套件,並成功建置專案。