Решение проблем 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 с использованием , указав версию Visual Studio с помощью и обеспечение того, чтобы используется. Эти шаги позволяют убедиться, что среда сборки правильно настроена для использования MSVC141.
Кроме того, сценарий PowerShell проверяет наличие набора инструментов MSVC141, используя . Если он не найден, сценарий инициирует процесс установки, запустив с необходимыми аргументами для установки недостающих компонентов. Такой автоматизированный подход гарантирует доступность необходимого набора инструментов, предотвращая связано с отсутствием включаемых файлов, таких как 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 и использование таких утилит, как для проверки установок. Автоматизация этих шагов в вашем и сценарии PowerShell помогают предотвратить сбои сборки и обеспечивают бесперебойную работу конвейера CI/CD, что в конечном итоге экономит время и ресурсы разработки.
- Как указать версию Visual Studio в действиях GitHub?
- Использовать в вашей конфигурация для установки желаемой версии Visual Studio.
- Что и почему он используется?
- — это утилита для поиска установок Visual Studio, обеспечивающая доступность необходимых наборов инструментов.
- Как можно автоматизировать установку недостающих компонентов?
- Использовать в PowerShell, чтобы запустить установщик с необходимыми аргументами для автоматической установки.
- Почему важно настраивать источники NuGet?
- Настройка источников NuGet гарантирует разрешение всех зависимостей проекта, что крайне важно для успешных сборок.
- Как проверить наличие набора инструментов MSVC141?
- Использовать в сценарии, чтобы проверить путь установки набора инструментов MSVC141.
- Что значит указать?
- Он указывает используемую версию MSBuild, обеспечивая совместимость с набором инструментов MSVC141.
- Как восстановить пакеты NuGet в действиях GitHub?
- Используйте команду за которым следует ваш файл решения, например .
- Какова цель действие?
- Он настраивает среду для использования MSBuild, необходимого для создания проектов .NET в GitHub Actions.
- Как я могу автоматически переименовать артефакты сборки?
- Используйте команды PowerShell, например для переименования файлов в зависимости от версии сборки.
- Зачем включать в настройке Java?
- Здесь указывается используемый дистрибутив JDK, гарантирующий, что для вашего проекта установлена правильная версия Java.
Включение набора инструментов MSVC141 в рабочий процесс GitHub Actions необходимо для поддержания стабильности и функциональности ваших проектов Visual Studio 2019. Обновив сценарии .yml и автоматизировав процесс установки, вы сможете предотвратить распространенные ошибки сборки, связанные с отсутствующими файлами. Такой упреждающий подход не только экономит время, но и повышает эффективность вашего конвейера CI/CD, обеспечивая более плавную и надежную сборку проектов.