练习 - 将更改推送到包

已完成

此时,你有两个管道。 一个用于将模型包发布到 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”项目的副本。

  1. 在 Visual Studio Code 中打开集成终端。

  2. 在终端上,运行以下 git checkout 命令以创建名为 add-game-style 的分支。

    git checkout -B add-game-style
    

将属性添加到模型包

向其中一个模型类添加一个名为 Score 的属性,该类提供与分数相关联的游戏模式(或难度)。

将在此处使用“Tailspin.SpaceGame.Web.Models”项目的 Visual Studio Code 副本。

  1. 在 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 应用来使用新属性。

  2. 保存该文件。

  3. 若要验证工作,请生成项目:

    dotnet build --configuration Release
    

    实际上,可以执行其他验证步骤,例如运行测试或通过使用它的应用测试新包。

生成并发布包

现已将新属性添加到 Score 类并验证项目生成成功,接下来可以更新软件包的版本。 然后可以将更改推送到 GitHub,以便 Azure Pipelines 可以生成和发布更新的包。

  1. 打开 azure-pipelines.yml,将 minorVersion0 更改为 1 并保存文件。

    minorVersion: '1'
    

    此处,我们将版本从 1.0.0 升级到 1.1.0 以使更改变得清晰。 在实践中,将遵循正在使用的包类型的版本控制方案。

    例如,根据语义化版本控制,将次要版本提升为 1 (1.1.0) 会告诉其他人,该包与使用该包的版本 1.0.0 的应用向后兼容。 使用该包的用户可能会修改其应用,以利用新功能。

    流行的开放源代码项目就是采用更改日志的形式提供文档,解释每个版本中所做的更改,以及如何从一个主版本迁移到下一版本。

  2. 暂存、提交和推送更改:

    git add .
    git commit -m "Add GameStyle property"
    git push origin add-game-style
    
  3. 从 Microsoft Azure Pipelines 中,转到“Tailspin.SpaceGame.Web.Models”项目并观察生成运行。

  4. 打开“Artifacts”选项卡并记下新版本。 不用担心;旧版本仍适用于仍然引用它的任何项目。

    A screenshot of the package in Azure Artifacts, showing version 1.1 of the package.

  5. 像以前一样,记下下一个单元的新版本。

参考模型包的新版本

现在,更改“Tailspin.SpaceGame.Web”项目以使用新版本的“Tailspin.SpaceGame.Web.Models”包。

将在此处使用 Space Game Web 应用项目的 Visual Studio Code 副本,即“Tailspin.SpaceGame.Web”。

  1. 从 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 应用。

  2. 从终端,暂存、提交和推送更改。

    git add .
    git commit -m "Bump Models package to 1.1.0"
    git push origin models-package
    
  3. 从 Azure Pipelines 中,转到“mslearn-tailspin-spacegame-web”项目并观察生成运行。

    从生成输出中可以看到,它获取了最新的依赖项,生成了应用,并发布了 Web 应用的项目。