Вирішення проблем 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 за допомогою , вказавши версію Visual Studio за допомогою , а також забезпечення того, щоб використовується. Ці дії гарантують, що середовище збірки правильно налаштовано для використання MSVC141.
Крім того, сценарій PowerShell перевіряє наявність набору інструментів MSVC141 за допомогою . Якщо його не знайдено, скрипт запускає процес інсталяції з необхідними аргументами для встановлення відсутніх компонентів. Цей автоматизований підхід гарантує, що необхідний набір інструментів доступний, запобігаючи пов’язані з відсутніми файлами включають, як-от «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 і використання таких утиліт, як для перевірки установок. Автоматизація цих кроків у вашому і сценарії PowerShell допомагають запобігти помилкам збірки та забезпечують безперебійну роботу конвеєра CI/CD, що зрештою заощаджує час і ресурси розробки.
- Як мені вказати версію Visual Studio в GitHub Actions?
- використання у вашому конфігурації, щоб встановити потрібну версію Visual Studio.
- Що і навіщо його використовують?
- це утиліта для пошуку інсталяцій Visual Studio, яка гарантує наявність необхідних наборів інструментів.
- Як я можу автоматизувати встановлення відсутніх компонентів?
- використання у PowerShell, щоб запустити інсталятор із необхідними аргументами для автоматичного встановлення.
- Чому важливо налаштувати джерела NuGet?
- Налаштування джерел NuGet гарантує, що всі залежності проекту вирішено, що має вирішальне значення для успішних збірок.
- Як перевірити наявність набору інструментів MSVC141?
- використання у сценарії, щоб перевірити шлях встановлення набору інструментів MSVC141.
- Що робить вказати?
- Він визначає версію MSBuild, яка буде використовуватися, забезпечуючи сумісність із набором інструментів MSVC141.
- Як відновити пакети NuGet у GitHub Actions?
- Використовуйте команду а потім ваш файл рішення, наприклад .
- Яка мета дія?
- Він налаштовує середовище для використання MSBuild, необхідного для створення проектів .NET у GitHub Actions.
- Як я можу автоматично перейменувати артефакти збірки?
- Використовуйте такі команди PowerShell, як щоб перейменувати файли на основі версії складання.
- Навіщо включати в налаштуваннях Java?
- Це визначає дистрибутив JDK для використання, гарантуючи, що для вашого проекту встановлено правильну версію Java.
Включення набору інструментів MSVC141 у ваш робочий процес GitHub Actions має важливе значення для підтримки стабільності та функціональності ваших проектів Visual Studio 2019. Оновивши сценарії .yml і автоматизувавши процес встановлення, ви можете запобігти поширеним помилкам збірки, пов’язаним із відсутніми файлами. Цей проактивний підхід не тільки економить час, але й підвищує ефективність конвеєра CI/CD, забезпечуючи плавнішу та надійнішу збірку проектів.