Руководство по обновлению сценариев .yml для MSVC141 на GitHub

Руководство по обновлению сценариев .yml для MSVC141 на GitHub
Руководство по обновлению сценариев .yml для MSVC141 на GitHub

Решение проблем MSVC141 в действиях GitHub

Мы работаем над проектом Visual Studio 2019, который недавно начал выдавать исключения, связанные с отсутствующими файлами, в частности «atlbase.h». Эта проблема, по-видимому, связана с отсутствием набора инструментов MSVC141, который не требовался еще несколько месяцев назад.

В этой статье мы расскажем вам, как обновить сценарии .yml в GitHub Actions, включив в них набор инструментов MSVC141. Это обеспечивает плавную сборку проекта и позволяет избежать ошибки «невозможно открыть включаемый файл», помогая поддерживать продуктивность рабочего процесса разработки.

Команда Описание
uses: microsoft/setup-msbuild@v1.1 Настраивает MSBuild для действий GitHub, позволяя создавать проекты .NET.
vs-version: 2019 Указывает используемую версию Visual Studio, обеспечивая совместимость с набором инструментов MSVC141.
msbuild-version: 16.x Определяет версию MSBuild в соответствии с необходимым набором инструментов MSVC141 для компиляции.
extenda/actions/setup-nuget-sources@v0 Настраивает источники NuGet в действиях GitHub, необходимые для восстановления зависимостей проекта.
nuget restore POS.sln Восстанавливает пакеты NuGet для указанного решения, разрешая все зависимости перед сборкой.
Copy-Item Копирует файлы из одного места в другое в PowerShell, используемом здесь для обработки шаблонов баз данных.
Start-Process Запускает новый процесс в PowerShell, полезный для запуска установщиков или других исполняемых файлов.
vswhere.exe Утилита для поиска установок Visual Studio, используемая для проверки наличия MSVC141.

Интеграция набора инструментов MSVC141 в действия GitHub

Приведенные выше сценарии гарантируют, что набор инструментов MSVC141 будет включен в ваш рабочий процесс GitHub Actions. Первый скрипт обновляет файл конфигурации YAML, включив в него шаги, необходимые для настройки необходимых инструментов и сред. Сюда входит настройка MSBuild с использованием microsoft/setup-msbuild@v1.1, указав версию Visual Studio с помощью vs-version: 2019и обеспечение того, чтобы msbuild-version: 16.x используется. Эти шаги позволяют убедиться, что среда сборки правильно настроена для использования MSVC141.

Кроме того, сценарий PowerShell проверяет наличие набора инструментов MSVC141, используя vswhere.exe. Если он не найден, сценарий инициирует процесс установки, запустив Start-Process с необходимыми аргументами для установки недостающих компонентов. Такой автоматизированный подход гарантирует доступность необходимого набора инструментов, предотвращая fatal error C1083 связано с отсутствием включаемых файлов, таких как atlbase.h. Выполняя эти шаги, вы сможете поддерживать стабильный и согласованный процесс сборки проектов Visual Studio 2019 в GitHub Actions.

Обновите сценарий .yml, включив в него набор инструментов MSVC141.

Действия GitHub Конфигурация YAML

name: Pull request - Windows
on:
  pull_request:
    paths-ignore:
      - 'Engine/Engine.Android/'
      - 'Mobile/'
jobs:
  build:
    runs-on: windows-2022
    defaults:
      run:
        shell: pwsh
    env:
      DEFAULT_VERSION: v17.4.500
      SolutionDir: ${{ github.workspace }}
    steps:
      - name: Checkout
        uses: actions/checkout@v3
        with:
          token: ${{ secrets.RS_GITHUB_TOKEN }}
          submodules: true
      - uses: actions/setup-java@v4
        with:
          distribution: 'temurin'
          java-version: '11'
      - name: Setup MSBuild
        uses: microsoft/setup-msbuild@v1.1
      - name: Install Visual Studio
        uses: microsoft/setup-msbuild@v1.1
        with:
          vs-version: 2019
          msbuild-version: 16.x
      - name: Setup NuGet sources
        uses: extenda/actions/setup-nuget-sources@v0
        with:
          config-file: NuGet.Config
          sources: |
            [{
              "name": "Nexus",
              "source": "https://repo.extendaretail.com/repository/nuget-hosted/",
              "username": "${{ secrets.NEXUS_USERNAME }}",
              "password": "${{ secrets.NEXUS_PASSWORD }}",
              "apikey": "${{ secrets.NUGET_API_KEY }}"
            }]
      - name: Restore NuGet packages
        run: nuget restore POS.sln
      - name: Determine version
        id: ver
        run: .\Build\determine-version.ps1
      - name: Update assemblies
        run: .\Build\update-assemblies.ps1 ${{ steps.ver.outputs.version }} ${{ steps.ver.outputs.full-version }}
      - name: Generate database template
        run: |
          .\Common\Database\AppVeyor\gen-databases.ps1 Common\Database abcDb
          Copy-Item abcDb\Template.db -Destination Common\Database
      - name: Build solution
        run: msbuild POS.sln @Build\WindowsBuildParams.rsp
      - name: Build installation packages
        run: |
          .\Build\exit-on-failure.ps1
          msbuild Installation\Installation.sln @Build\WindowsBuildParams.rsp -p:BuildNumber=${{ steps.ver.outputs.full-version }}
          ExitOnFailure
          Get-ChildItem Installation\Bin\Release
          Rename-Item -Path Installation\Bin\Release\abc.msi -NewName abc-v${{ steps.ver.outputs.full-version }}.msi
          Rename-Item -Path Installation\Bin\Release\abc.exe -NewName abc-v${{ steps.ver.outputs.full-version }}.exe
          Rename-Item -Path Installation\Bin\Release\VRRSSurfaceComponentsEditor.msi -NewName SurfaceComponentsEditor-v${{ steps.ver.outputs.full-version }}.msi
      - name: Generate customization package
        run: .\Common\Database\AppVeyor\gen-customization-zip.ps1 Common\Database ${{ steps.ver.outputs.full-version }}
      - name: Save abc Installer
        uses: actions/upload-artifact@v3
        with:
          name: abcInstaller-v${{ steps.ver.outputs.full-version }}
          path: Installation\Bin\Release\abc-*.msi
      - name: Save abc Setup
        uses: actions/upload-artifact@v3
        with:
          name: abcSetup-v${{ steps.ver.outputs.full-version }}
          path: Installation\Bin\Release\abc-*.exe
      - name: Save Database
        uses: actions/upload-artifact@v3
        with:
          name: Database-v${{ steps.ver.outputs.full-version }}
          path: Common\Database\CustomizationTemplate\*

Убедитесь, что набор инструментов MSVC правильный в действиях GitHub

Скрипт PowerShell для проверки и установки MSVC141

$vswherePath = "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe"
if (-Not (Test-Path $vswherePath)) {
    Write-Error "vswhere.exe not found at $vswherePath"
    exit 1
}
$vsInstallPath = & $vswherePath -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath
if (-Not $vsInstallPath) {
    Write-Output "MSVC141 not found. Installing..."
    Start-Process -FilePath "cmd.exe" -ArgumentList "/c start /wait vs_installer.exe --quiet --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 --includeRecommended --includeOptional" -Wait
    if ($?) {
        Write-Output "MSVC141 installation completed."
    }
    else {
        Write-Error "Failed to install MSVC141."
        exit 1
    }
} else {
    Write-Output "MSVC141 already installed at $vsInstallPath"
}
exit 0

Обеспечение совместимости с наборами инструментов MSVC в действиях GitHub

Поддержание совместимости с различными наборами инструментов в среде непрерывной интеграции (CI), такой как GitHub Actions, имеет решающее значение для обеспечения согласованности сборок и минимизации ошибок. Одним из ключевых аспектов является обновление файлов конфигурации с помощью необходимых инструментов и зависимостей. В случае MSVC141 важно понимать, что этот набор инструментов необходим для определенных проектов, особенно тех, которые используют старые библиотеки и компоненты C++.

Включение набора инструментов MSVC141 в настройку GitHub Actions предполагает не только указание правильной версии Visual Studio, но и обеспечение разрешения всех зависимостей. Это включает в себя правильную настройку источников NuGet и использование таких утилит, как vswhere.exe для проверки установок. Автоматизация этих шагов в вашем .yml и сценарии PowerShell помогают предотвратить сбои сборки и обеспечивают бесперебойную работу конвейера CI/CD, что в конечном итоге экономит время и ресурсы разработки.

Общие вопросы и решения по интеграции наборов инструментов MSVC

  1. Как указать версию Visual Studio в действиях GitHub?
  2. Использовать vs-version: 2019 в вашей .yml конфигурация для установки желаемой версии Visual Studio.
  3. Что vswhere.exe и почему он используется?
  4. vswhere.exe — это утилита для поиска установок Visual Studio, обеспечивающая доступность необходимых наборов инструментов.
  5. Как можно автоматизировать установку недостающих компонентов?
  6. Использовать Start-Process в PowerShell, чтобы запустить установщик с необходимыми аргументами для автоматической установки.
  7. Почему важно настраивать источники NuGet?
  8. Настройка источников NuGet гарантирует разрешение всех зависимостей проекта, что крайне важно для успешных сборок.
  9. Как проверить наличие набора инструментов MSVC141?
  10. Использовать vswhere.exe в сценарии, чтобы проверить путь установки набора инструментов MSVC141.
  11. Что значит msbuild-version: 16.x указать?
  12. Он указывает используемую версию MSBuild, обеспечивая совместимость с набором инструментов MSVC141.
  13. Как восстановить пакеты NuGet в действиях GitHub?
  14. Используйте команду nuget restore за которым следует ваш файл решения, например nuget restore POS.sln.
  15. Какова цель Setup MSBuild действие?
  16. Он настраивает среду для использования MSBuild, необходимого для создания проектов .NET в GitHub Actions.
  17. Как я могу автоматически переименовать артефакты сборки?
  18. Используйте команды PowerShell, например Rename-Item для переименования файлов в зависимости от версии сборки.
  19. Зачем включать distribution: 'temurin' в настройке Java?
  20. Здесь указывается используемый дистрибутив JDK, гарантирующий, что для вашего проекта установлена ​​правильная версия Java.

Заключительные мысли об интеграции MSVC141

Включение набора инструментов MSVC141 в рабочий процесс GitHub Actions необходимо для поддержания стабильности и функциональности ваших проектов Visual Studio 2019. Обновив сценарии .yml и автоматизировав процесс установки, вы сможете предотвратить распространенные ошибки сборки, связанные с отсутствующими файлами. Такой упреждающий подход не только экономит время, но и повышает эффективность вашего конвейера CI/CD, обеспечивая более плавную и надежную сборку проектов.