练习 - 将更改推送到包
此时,你有两个管道。 一个用于将模型包发布到 Azure Artifacts,另一个用于 Space Game Web 应用。 Web 应用的生成配置引用模型包,以便它可以访问模型类。
在这里,将练习更新模型包并使用来自 Web 应用的更改。
为此,首先要向其中一个模型类添加属性,然后提交包版本。 然后将更改提交给 GitHub,以便管道可以生成包并将其发布到 Azure Artifacts。
然后,更新 Web 应用以引用模型包的较新版本号,以便它可以使用添加的属性。
创建分支
首先创建一个用于保存工作的分支。 创建一个名为 add-game-style
的分支,该分支基于 main
分支。
此时,打开两个 Visual Studio Code 副本,一个用于“Tailspin.SpaceGame.Web.Models”项目,另一个用于 Space Game Web 应用项目“Tailspin.SpaceGame.Web”。 将在此处使用“Tailspin.SpaceGame.Web.Models”项目的副本。
在 Visual Studio Code 中打开集成终端。
在终端上,运行以下
git checkout
命令以创建名为add-game-style
的分支。git checkout -B add-game-style
将属性添加到模型包
向其中一个模型类添加一个名为 Score
的属性,该类提供与分数相关联的游戏模式(或难度)。
将在此处使用“Tailspin.SpaceGame.Web.Models”项目的 Visual Studio Code 副本。
在 Visual Studio Code 中,打开“Tailspin.SpaceGame.Web.Models/Models/Score.cs”。 将以下突出显示的属性添加到已存在的属性列表中。
using System.Text.Json.Serialization; namespace TailSpin.SpaceGame.Web.Models { public class Score : Model { // The ID of the player profile associated with this score. [JsonPropertyName("profileId")] public string ProfileId { get; set; } // The score value. [JsonPropertyName("score")] public int HighScore { get; set; } // The game mode the score is associated with. [JsonPropertyName("gameMode")] public string GameMode { get; set; } // The game region (map) the score is associated with. [JsonPropertyName("gameRegion")] public string GameRegion { get; set; } // The game style (difficulty) the score is associated with. [JsonPropertyName("gameStyle")] public string GameStyle { get; set; } } }
备注
正在对项目中的文件进行更改,以演示在何处增加版本号。 但我们不会更新 Web 应用来使用新属性。
保存该文件。
若要验证工作,请生成项目:
dotnet build --configuration Release
实际上,可以执行其他验证步骤,例如运行测试或通过使用它的应用测试新包。
生成并发布包
现已将新属性添加到 Score
类并验证项目生成成功,接下来可以更新软件包的版本。 然后可以将更改推送到 GitHub,以便 Azure Pipelines 可以生成和发布更新的包。
打开 azure-pipelines.yml,将
minorVersion
从0
更改为1
并保存文件。minorVersion: '1'
此处,我们将版本从 1.0.0 升级到 1.1.0 以使更改变得清晰。 在实践中,将遵循正在使用的包类型的版本控制方案。
例如,根据语义化版本控制,将次要版本提升为 1 (1.1.0) 会告诉其他人,该包与使用该包的版本 1.0.0 的应用向后兼容。 使用该包的用户可能会修改其应用,以利用新功能。
流行的开放源代码项目就是采用更改日志的形式提供文档,解释每个版本中所做的更改,以及如何从一个主版本迁移到下一版本。
暂存、提交和推送更改:
git add . git commit -m "Add GameStyle property" git push origin add-game-style
从 Microsoft Azure Pipelines 中,转到“Tailspin.SpaceGame.Web.Models”项目并观察生成运行。
打开“Artifacts”选项卡并记下新版本。 不用担心;旧版本仍适用于仍然引用它的任何项目。
像以前一样,记下下一个单元的新版本。
参考模型包的新版本
现在,更改“Tailspin.SpaceGame.Web”项目以使用新版本的“Tailspin.SpaceGame.Web.Models”包。
将在此处使用 Space Game Web 应用项目的 Visual Studio Code 副本,即“Tailspin.SpaceGame.Web”。
从 Visual Studio Code 中,打开“Tailspin.SpaceGame.Web.csproj”并将
PackageReference
更改为在 Azure Artifacts 中创建的“Tailspin.SpaceGame.Web.Models”包的版本号。 然后保存文件。下面是一个示例:
<PackageReference Include="Tailspin.SpaceGame.Web.Models" Version="1.1.0-CI-20210528-202436" />
如果 Visual Studio Code 要求还原包,则可以放心忽略该消息。 为简洁起见,我们不会在本地生成 Web 应用。
从终端,暂存、提交和推送更改。
git add . git commit -m "Bump Models package to 1.1.0" git push origin models-package
从 Azure Pipelines 中,转到“mslearn-tailspin-spacegame-web”项目并观察生成运行。
从生成输出中可以看到,它获取了最新的依赖项,生成了应用,并发布了 Web 应用的项目。