Guide de mise à jour des scripts .yml pour MSVC141 dans GitHub

Guide de mise à jour des scripts .yml pour MSVC141 dans GitHub
Guide de mise à jour des scripts .yml pour MSVC141 dans GitHub

Résolution des problèmes MSVC141 dans les actions GitHub

Nous travaillons sur un projet Visual Studio 2019 qui a récemment commencé à générer des exceptions liées aux fichiers manquants, en particulier « atlbase.h ». Ce problème semble être dû à l’absence du jeu d’outils MSVC141, qui n’était requis qu’il y a quelques mois.

Dans cet article, nous vous expliquerons comment mettre à jour vos scripts .yml dans GitHub Actions pour inclure l'ensemble d'outils MSVC141. Cela garantit une construction fluide du projet et évite l'erreur « Impossible d'ouvrir le fichier d'inclusion », vous aidant ainsi à maintenir la productivité dans votre flux de travail de développement.

Commande Description
uses: microsoft/setup-msbuild@v1.1 Configure MSBuild pour les actions GitHub, permettant la création de projets .NET.
vs-version: 2019 Spécifie la version de Visual Studio à utiliser, garantissant la compatibilité avec le jeu d'outils MSVC141.
msbuild-version: 16.x Définit la version MSBuild, en s'alignant sur l'ensemble d'outils MSVC141 requis pour la compilation.
extenda/actions/setup-nuget-sources@v0 Configure les sources NuGet dans GitHub Actions, essentielles pour restaurer les dépendances du projet.
nuget restore POS.sln Restaure les packages NuGet pour la solution spécifiée, en résolvant toutes les dépendances avant la génération.
Copy-Item Copie les fichiers d'un emplacement à un autre dans PowerShell, utilisé ici pour gérer les modèles de base de données.
Start-Process Démarre un nouveau processus dans PowerShell, utile pour exécuter des programmes d'installation ou d'autres exécutables.
vswhere.exe Un utilitaire pour localiser les installations de Visual Studio, utilisé pour vérifier la présence de MSVC141.

Intégration de l'ensemble d'outils MSVC141 dans les actions GitHub

Les scripts fournis ci-dessus garantissent que l'ensemble d'outils MSVC141 est inclus dans votre flux de travail GitHub Actions. Le premier script met à jour le fichier de configuration YAML pour inclure les étapes nécessaires à la configuration des outils et environnements requis. Cela inclut la configuration de MSBuild à l'aide de microsoft/setup-msbuild@v1.1, en spécifiant la version de Visual Studio avec vs-version: 2019, et en veillant à ce que le msbuild-version: 16.x est utilisé. Ces étapes garantissent que l'environnement de génération est correctement configuré pour utiliser MSVC141.

De plus, le script PowerShell vérifie la présence du jeu d'outils MSVC141 à l'aide de vswhere.exe. S'il n'est pas trouvé, le script lance le processus d'installation en exécutant Start-Process avec les arguments nécessaires pour installer les composants manquants. Cette approche automatisée garantit que l'ensemble d'outils requis est disponible, empêchant ainsi le fatal error C1083 liés aux fichiers d'inclusion manquants comme « atlbase.h ». En suivant ces étapes, vous pouvez maintenir un processus de génération stable et cohérent pour vos projets Visual Studio 2019 dans GitHub Actions.

Mettre à jour le script .yml pour inclure l'ensemble d'outils MSVC141

Configuration YAML des actions 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\*

Assurez-vous que l'ensemble d'outils MSVC est correct dans les actions GitHub

Script PowerShell pour vérifier et installer 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

Assurer la compatibilité avec les ensembles d'outils MSVC dans les actions GitHub

Le maintien de la compatibilité avec divers ensembles d'outils dans un environnement d'intégration continue (CI) tel que GitHub Actions est crucial pour garantir des builds cohérents et minimiser les erreurs. Un aspect clé est de maintenir vos fichiers de configuration à jour avec les outils et dépendances nécessaires. Dans le cas de MSVC141, il est important de comprendre que cet ensemble d'outils est essentiel pour certains projets, notamment ceux qui reposent sur d'anciennes bibliothèques et composants C++.

L'inclusion du jeu d'outils MSVC141 dans votre configuration GitHub Actions implique non seulement de spécifier la version correcte de Visual Studio, mais également de garantir que toutes les dépendances sont résolues. Cela inclut la configuration correcte des sources NuGet et l'utilisation d'utilitaires tels que vswhere.exe pour vérifier les installations. Automatiser ces étapes au sein de votre .yml et les scripts PowerShell aident à prévenir les échecs de construction et à assurer le bon fonctionnement de votre pipeline CI/CD, économisant ainsi du temps et des ressources de développement.

Questions courantes et solutions pour l'intégration des ensembles d'outils MSVC

  1. Comment spécifier la version de Visual Studio dans GitHub Actions ?
  2. Utiliser vs-version: 2019 dans ton .yml configuration pour définir la version de Visual Studio souhaitée.
  3. Qu'est-ce que vswhere.exe et pourquoi est-il utilisé ?
  4. vswhere.exe est un utilitaire permettant de localiser les installations de Visual Studio, garantissant ainsi que les ensembles d'outils requis sont disponibles.
  5. Comment puis-je automatiser l’installation des composants manquants ?
  6. Utiliser Start-Process dans PowerShell pour exécuter le programme d'installation avec les arguments nécessaires pour les installations sans assistance.
  7. Pourquoi est-il important de configurer les sources NuGet ?
  8. La configuration des sources NuGet garantit que toutes les dépendances du projet sont résolues, ce qui est crucial pour la réussite des builds.
  9. Comment puis-je vérifier la présence du jeu d’outils MSVC141 ?
  10. Utiliser vswhere.exe dans un script pour vérifier le chemin d'installation du jeu d'outils MSVC141.
  11. Qu'est-ce que msbuild-version: 16.x spécifier?
  12. Il spécifie la version MSBuild à utiliser, garantissant la compatibilité avec l'ensemble d'outils MSVC141.
  13. Comment restaurer les packages NuGet dans GitHub Actions ?
  14. Utilisez la commande nuget restore suivi de votre fichier de solution, comme nuget restore POS.sln.
  15. Quel est le but du Setup MSBuild action?
  16. Il configure l'environnement pour utiliser MSBuild, nécessaire à la création de projets .NET dans GitHub Actions.
  17. Comment puis-je renommer automatiquement les artefacts de build ?
  18. Utilisez des commandes PowerShell comme Rename-Item pour renommer les fichiers en fonction de la version de build.
  19. Pourquoi inclure distribution: 'temurin' dans la configuration Java ?
  20. Ceci spécifie la distribution JDK à utiliser, garantissant que la version Java correcte est installée pour votre projet.

Réflexions finales sur l'intégration de MSVC141

S'assurer que le jeu d'outils MSVC141 est inclus dans votre flux de travail GitHub Actions est essentiel pour maintenir la stabilité et les fonctionnalités de vos projets Visual Studio 2019. En mettant à jour vos scripts .yml et en automatisant le processus d'installation, vous pouvez éviter les erreurs de construction courantes liées aux fichiers manquants. Cette approche proactive permet non seulement de gagner du temps, mais améliore également l'efficacité de votre pipeline CI/CD, permettant une construction de projet plus fluide et plus fiable.