Посібник з оновлення сценаріїв .yml для MSVC141 у GitHub

Посібник з оновлення сценаріїв .yml для MSVC141 у GitHub
Посібник з оновлення сценаріїв .yml для MSVC141 у GitHub

Вирішення проблем MSVC141 у GitHub Actions

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

У цій статті ми розповімо вам, як оновити ваші сценарії .yml у GitHub Actions, щоб включити набір інструментів MSVC141. Це забезпечує плавну збірку проекту та уникає помилки «неможливо відкрити включений файл», допомагаючи підтримувати продуктивність робочого процесу розробки.

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

Інтеграція набору інструментів MSVC141 у GitHub Actions

Сценарії, надані вище, гарантують, що набір інструментів 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

Конфігурація YAML дій GitHub

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 Actions

Сценарій 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 Actions

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

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

Поширені запитання та рішення щодо інтеграції наборів інструментів MSVC

  1. Як мені вказати версію Visual Studio в GitHub Actions?
  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 Actions?
  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, забезпечуючи плавнішу та надійнішу збірку проектів.