Упражнение. Ссылка на пакет из приложения
В этом уроке вы получите новый код Tailspin.SpaceGame.Web, содержащий удаленные классы моделей. Вместо того чтобы ссылаться на модели напрямую, код будет ссылаться на них из пакета, созданного в предыдущем уроке.
Вот список шагов:
- Получите новый код из ветви исходного репозитория Tailspin.SpaceGame.Web.
- Ссылка на новую версию пакета моделей, 1.0.0.
- Чтобы найти этот пакет в веб-канале Артефактов Azure, измените конвейер сборки.
- Просмотрите конвейер успешной сборки приложения.
Извлечение ветви из GitHub
models-package
Получите ветвь из GitHub и проверка или перейдите в нее.
Эта ветвь содержит проект Space Game, над которым вы работали в предыдущих модулях, но каталог Models удален.
Переключитесь на копию Visual Studio Code с проектом Tailspin.SpaceGame.Web.
Чтобы получить ветвь с именем из
models-package
репозитория Майкрософт, выполните следующиеgit
команды из терминала. Затем перейдите в ту ветвь.git fetch upstream models-package git checkout -B models-package upstream/models-package
Формат этих команд позволяет получать начальный код из репозитория Майкрософт на GitHub, известном как
upstream
. Через некоторое время вы отправите эту ветвь в репозиторий GitHub, известный какorigin
.В качестве дополнительного шага убедитесь, что каталог Models больше не существует в обозревателе файлов. Вместо этого у вас должны быть контроллеры, представления и другие каталоги.
Ссылки на пакет Models
Откройте файл 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" />
Это ссылка на пакет Tailspin.SpaceGame.Web.Models, созданный в Azure Artifacts. Обратите внимание на номер версии: 1.0.0 и суффикс предварительной версии. Это соответствует начальной версии, опубликованной в Azure Artifacts в предыдущем уроке.
Сохраните файл.
Примечание.
При сохранении файла Visual Studio Code может попросить восстановить зависимости. Нажмите кнопку "Восстановить", чтобы восстановить зависимости.
Изменение конфигурации конвейера
Ветвь models-package
предоставляет исходный файл azure-pipelines.yml. Здесь вы измените конфигурацию конвейера, чтобы извлечь пакет Tailspin.SpaceGame.Web.Models из Артефактов Azure.
Откройте файл azure-pipelines.yml в Visual Studio Code.
Измените 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 для зависимостей, которые могут быть там.
Подготовьте, зафиксируйте и отправьте изменения на GitHub.
git add . git commit -m "Add reference to Models package" git push origin models-package
Перейдите в Azure Pipelines и посмотрите, как выполняется сборка. Сборка выбирает пакет Models в Azure Artifacts и успешно выполняет сборку.