Resolució de problemes MSVC141 a les accions de GitHub
Estem treballant en un projecte de Visual Studio 2019 que recentment va començar a llançar excepcions relacionades amb fitxers que falten, concretament 'atlbase.h'. Sembla que aquest problema es deu a l'absència del conjunt d'eines MSVC141, que no era necessari fins fa uns mesos.
En aquest article, us guiarem sobre com actualitzar els vostres scripts .yml a GitHub Actions per incloure el conjunt d'eines MSVC141. Això garanteix una compilació del projecte sense problemes i evita l'error "no es pot obrir el fitxer incloure", ajudant-vos a mantenir la productivitat en el vostre flux de treball de desenvolupament.
Comandament | Descripció |
---|---|
uses: microsoft/setup-msbuild@v1.1 | Configura MSBuild per a accions de GitHub, permetent la creació de projectes .NET. |
vs-version: 2019 | Especifica la versió de Visual Studio que cal utilitzar, garantint la compatibilitat amb el conjunt d'eines MSVC141. |
msbuild-version: 16.x | Defineix la versió de MSBuild, alineant-se amb el conjunt d'eines MSVC141 necessari per a la compilació. |
extenda/actions/setup-nuget-sources@v0 | Configura fonts de NuGet a GitHub Actions, essencial per restaurar les dependències del projecte. |
nuget restore POS.sln | Restaura els paquets NuGet per a la solució especificada, resolent totes les dependències abans de la compilació. |
Copy-Item | Copia fitxers d'una ubicació a una altra a PowerShell, que s'utilitza aquí per gestionar plantilles de bases de dades. |
Start-Process | Inicia un procés nou a PowerShell, útil per executar instal·ladors o altres executables. |
vswhere.exe | Una utilitat per localitzar les instal·lacions de Visual Studio, que s'utilitza per comprovar la presència de MSVC141. |
Integració de MSVC141 Toolset a GitHub Actions
Els scripts proporcionats anteriorment garanteixen que el conjunt d'eines MSVC141 s'inclogui al vostre flux de treball de GitHub Actions. El primer script actualitza el fitxer de configuració YAML per incloure els passos necessaris per configurar les eines i els entorns necessaris. Això inclou configurar MSBuild utilitzant , especificant la versió de Visual Studio amb , i assegurant que el s'utilitza. Aquests passos asseguren que l'entorn de compilació està configurat correctament per utilitzar MSVC141.
A més, l'script de PowerShell comprova la presència del conjunt d'eines MSVC141 . Si no es troba, l'script inicia el procés d'instal·lació executant-lo amb els arguments necessaris per instal·lar els components que falten. Aquest enfocament automatitzat garanteix que el conjunt d'eines necessàries estigui disponible, evitant el relacionats amb els fitxers d'inclusió que falten com "atlbase.h". Seguint aquests passos, podeu mantenir un procés de creació estable i coherent per als vostres projectes de Visual Studio 2019 a GitHub Actions.
Actualitzeu l'script .yml per incloure el conjunt d'eines MSVC141
Configuració YAML d'accions de 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\*
Assegureu-vos que el conjunt d'eines MSVC correcte a les accions de GitHub
Script de PowerShell per comprovar i instal·lar 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
Garantir la compatibilitat amb els conjunts d'eines MSVC a les accions de GitHub
Mantenir la compatibilitat amb diversos conjunts d'eines en un entorn d'integració contínua (CI) com GitHub Actions és crucial per garantir compilacions coherents i minimitzar els errors. Un aspecte clau és mantenir els fitxers de configuració actualitzats amb les eines i dependències necessàries. En el cas de MSVC141, és important entendre que aquest conjunt d'eines és essencial per a determinats projectes, especialment aquells que es basen en biblioteques i components C++ més antics.
Incloure el conjunt d'eines MSVC141 a la configuració de GitHub Actions no només implica especificar la versió correcta de Visual Studio, sinó també assegurar-se que es resolguin totes les dependències. Això inclou configurar correctament les fonts de NuGet i utilitzar utilitats com ara per comprovar les instal·lacions. Automatitzar aquests passos dins del vostre i els scripts de PowerShell ajuden a prevenir errors de compilació i fan que el vostre pipeline CI/CD funcioni sense problemes, estalviant, finalment, temps i recursos de desenvolupament.
- Com puc especificar la versió de Visual Studio a GitHub Actions?
- Ús en el teu configuració per establir la versió desitjada de Visual Studio.
- Què és i per què s'utilitza?
- és una utilitat per localitzar les instal·lacions de Visual Studio, assegurant-se que els conjunts d'eines necessàries estan disponibles.
- Com puc automatitzar la instal·lació dels components que falten?
- Ús a PowerShell per executar l'instal·lador amb els arguments necessaris per a instal·lacions desateses.
- Per què és important configurar les fonts de NuGet?
- La configuració de fonts de NuGet garanteix que es resolguin totes les dependències del projecte, cosa que és crucial per a les compilacions amb èxit.
- Com comprobo la presència del conjunt d'eines MSVC141?
- Ús en un script per verificar la ruta d'instal·lació del conjunt d'eines MSVC141.
- El que fa especificar?
- Especifica la versió de MSBuild que s'utilitzarà, garantint la compatibilitat amb el conjunt d'eines MSVC141.
- Com puc restaurar paquets NuGet a GitHub Actions?
- Utilitzeu l'ordre seguit del fitxer de solució, com ara .
- Quina és la finalitat del acció?
- Configura l'entorn per utilitzar MSBuild, necessari per crear projectes .NET a GitHub Actions.
- Com puc canviar el nom dels artefactes de construcció automàticament?
- Utilitzeu ordres de PowerShell com per canviar el nom dels fitxers en funció de la versió de compilació.
- Per què incloure a la configuració de Java?
- Això especifica la distribució JDK que cal utilitzar, assegurant-se que la versió de Java correcta està instal·lada per al vostre projecte.
Assegurar-se que el conjunt d'eines MSVC141 s'inclou al vostre flux de treball de GitHub Actions és essencial per mantenir l'estabilitat i la funcionalitat dels vostres projectes de Visual Studio 2019. Si actualitzeu els vostres scripts .yml i automatitzeu el procés d'instal·lació, podeu evitar errors de compilació habituals relacionats amb els fitxers que falten. Aquest enfocament proactiu no només estalvia temps, sinó que també millora l'eficiència del vostre pipeline CI/CD, permetent compilacions de projectes més fluides i fiables.