Guia per actualitzar els scripts .yml per a MSVC141 a GitHub

Guia per actualitzar els scripts .yml per a MSVC141 a GitHub
Guia per actualitzar els scripts .yml per a MSVC141 a GitHub

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 microsoft/setup-msbuild@v1.1, especificant la versió de Visual Studio amb vs-version: 2019, i assegurant que el msbuild-version: 16.x 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 vswhere.exe. Si no es troba, l'script inicia el procés d'instal·lació executant-lo Start-Process 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 fatal error C1083 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 vswhere.exe per comprovar les instal·lacions. Automatitzar aquests passos dins del vostre .yml 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.

Preguntes i solucions habituals per integrar conjunts d'eines MSVC

  1. Com puc especificar la versió de Visual Studio a GitHub Actions?
  2. Ús vs-version: 2019 en el teu .yml configuració per establir la versió desitjada de Visual Studio.
  3. Què és vswhere.exe i per què s'utilitza?
  4. vswhere.exe és una utilitat per localitzar les instal·lacions de Visual Studio, assegurant-se que els conjunts d'eines necessàries estan disponibles.
  5. Com puc automatitzar la instal·lació dels components que falten?
  6. Ús Start-Process a PowerShell per executar l'instal·lador amb els arguments necessaris per a instal·lacions desateses.
  7. Per què és important configurar les fonts de NuGet?
  8. 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.
  9. Com comprobo la presència del conjunt d'eines MSVC141?
  10. Ús vswhere.exe en un script per verificar la ruta d'instal·lació del conjunt d'eines MSVC141.
  11. El que fa msbuild-version: 16.x especificar?
  12. Especifica la versió de MSBuild que s'utilitzarà, garantint la compatibilitat amb el conjunt d'eines MSVC141.
  13. Com puc restaurar paquets NuGet a GitHub Actions?
  14. Utilitzeu l'ordre nuget restore seguit del fitxer de solució, com ara nuget restore POS.sln.
  15. Quina és la finalitat del Setup MSBuild acció?
  16. Configura l'entorn per utilitzar MSBuild, necessari per crear projectes .NET a GitHub Actions.
  17. Com puc canviar el nom dels artefactes de construcció automàticament?
  18. Utilitzeu ordres de PowerShell com Rename-Item per canviar el nom dels fitxers en funció de la versió de compilació.
  19. Per què incloure distribution: 'temurin' a la configuració de Java?
  20. Això especifica la distribució JDK que cal utilitzar, assegurant-se que la versió de Java correcta està instal·lada per al vostre projecte.

Consideracions finals sobre la integració de MSVC141

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.