Guida per aggiornare gli script .yml per MSVC141 in GitHub

Guida per aggiornare gli script .yml per MSVC141 in GitHub
Guida per aggiornare gli script .yml per MSVC141 in GitHub

Risoluzione dei problemi MSVC141 nelle azioni GitHub

Stiamo lavorando a un progetto Visual Studio 2019 che recentemente ha iniziato a generare eccezioni relative ai file mancanti, in particolare "atlbase.h". Questo problema sembra essere dovuto all'assenza del set di strumenti MSVC141, che non era necessario fino a pochi mesi fa.

In questo articolo ti guideremo su come aggiornare i tuoi script .yml in GitHub Actions per includere il set di strumenti MSVC141. Ciò garantisce una creazione fluida del progetto ed evita l'errore "impossibile aprire il file di inclusione", aiutandoti a mantenere la produttività nel flusso di lavoro di sviluppo.

Comando Descrizione
uses: microsoft/setup-msbuild@v1.1 Configura MSBuild per GitHub Actions, consentendo la creazione di progetti .NET.
vs-version: 2019 Specifica la versione di Visual Studio da utilizzare, garantendo la compatibilità con il set di strumenti MSVC141.
msbuild-version: 16.x Definisce la versione di MSBuild, allineandosi al set di strumenti MSVC141 richiesto per la compilazione.
extenda/actions/setup-nuget-sources@v0 Configura le origini NuGet nelle azioni GitHub, essenziali per ripristinare le dipendenze del progetto.
nuget restore POS.sln Ripristina i pacchetti NuGet per la soluzione specificata, risolvendo tutte le dipendenze prima della compilazione.
Copy-Item Copia i file da una posizione a un'altra in PowerShell, utilizzati qui per gestire i modelli di database.
Start-Process Avvia un nuovo processo in PowerShell, utile per eseguire programmi di installazione o altri file eseguibili.
vswhere.exe Un'utilità per individuare le installazioni di Visual Studio, utilizzata per verificare la presenza di MSVC141.

Integrazione del set di strumenti MSVC141 nelle azioni GitHub

Gli script forniti sopra garantiscono che il set di strumenti MSVC141 sia incluso nel flusso di lavoro di GitHub Actions. Il primo script aggiorna il file di configurazione YAML per includere i passaggi necessari per impostare gli strumenti e gli ambienti richiesti. Ciò include la configurazione di MSBuild utilizzando microsoft/setup-msbuild@v1.1, specificando la versione di Visual Studio con vs-version: 2019, e garantendo che il msbuild-version: 16.x si usa. Questi passaggi assicurano che l'ambiente di compilazione sia configurato correttamente per utilizzare MSVC141.

Inoltre, lo script PowerShell verifica la presenza del set di strumenti MSVC141 utilizzando vswhere.exe. Se non viene trovato, lo script avvia il processo di installazione eseguendo Start-Process con gli argomenti necessari per installare i componenti mancanti. Questo approccio automatizzato garantisce che il set di strumenti richiesto sia disponibile, impedendo il fatal error C1083 relativo ai file include mancanti come "atlbase.h". Seguendo questi passaggi è possibile mantenere un processo di compilazione stabile e coerente per i progetti Visual Studio 2019 in GitHub Actions.

Aggiorna lo script .yml per includere il set di strumenti MSVC141

Configurazione YAML delle azioni 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\*

Assicurati che il set di strumenti MSVC sia corretto nelle azioni GitHub

Script di PowerShell per il controllo e l'installazione di 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

Garantire la compatibilità con i set di strumenti MSVC nelle azioni GitHub

Mantenere la compatibilità con vari set di strumenti in un ambiente di integrazione continua (CI) come GitHub Actions è fondamentale per garantire build coerenti e ridurre al minimo gli errori. Un aspetto fondamentale è mantenere aggiornati i file di configurazione con gli strumenti e le dipendenze necessari. Nel caso di MSVC141, è importante comprendere che questo set di strumenti è essenziale per alcuni progetti, in particolare quelli che si basano su librerie e componenti C++ meno recenti.

Includere il set di strumenti MSVC141 nella configurazione di GitHub Actions implica non solo specificare la versione corretta di Visual Studio, ma anche garantire che tutte le dipendenze siano risolte. Ciò include la configurazione corretta delle origini NuGet e l'utilizzo di utilità come vswhere.exe per verificare le installazioni. Automatizzando questi passaggi all'interno del tuo .yml e gli script PowerShell aiutano a prevenire errori di compilazione e mantengono la pipeline CI/CD in esecuzione senza intoppi, risparmiando tempo e risorse di sviluppo.

Domande e soluzioni comuni per l'integrazione dei set di strumenti MSVC

  1. Come posso specificare la versione di Visual Studio in GitHub Actions?
  2. Utilizzo vs-version: 2019 nel tuo .yml configurazione per impostare la versione di Visual Studio desiderata.
  3. Cosa è vswhere.exe e perché viene utilizzato?
  4. vswhere.exe è un'utilità per individuare le installazioni di Visual Studio, garantendo la disponibilità dei set di strumenti richiesti.
  5. Come posso automatizzare l'installazione dei componenti mancanti?
  6. Utilizzo Start-Process in PowerShell per eseguire il programma di installazione con gli argomenti necessari per le installazioni automatiche.
  7. Perché è importante configurare le origini NuGet?
  8. La configurazione delle origini NuGet garantisce che tutte le dipendenze del progetto vengano risolte, il che è fondamentale per la riuscita delle compilazioni.
  9. Come posso verificare la presenza del set di strumenti MSVC141?
  10. Utilizzo vswhere.exe in uno script per verificare il percorso di installazione del set di strumenti MSVC141.
  11. Cosa fa msbuild-version: 16.x specificare?
  12. Specifica la versione di MSBuild da utilizzare, garantendo la compatibilità con il set di strumenti MSVC141.
  13. Come posso ripristinare i pacchetti NuGet in GitHub Actions?
  14. Usa il comando nuget restore seguito dal file della soluzione, come nuget restore POS.sln.
  15. Qual è lo scopo del Setup MSBuild azione?
  16. Configura l'ambiente per utilizzare MSBuild, necessario per creare progetti .NET in GitHub Actions.
  17. Come posso rinominare automaticamente gli artefatti di build?
  18. Utilizza comandi PowerShell come Rename-Item per rinominare i file in base alla versione build.
  19. Perché includere distribution: 'temurin' nella configurazione Java?
  20. Ciò specifica la distribuzione JDK da utilizzare, garantendo che sia installata la versione Java corretta per il tuo progetto.

Considerazioni finali sull'integrazione di MSVC141

Assicurarsi che il set di strumenti MSVC141 sia incluso nel flusso di lavoro di GitHub Actions è essenziale per mantenere la stabilità e la funzionalità dei progetti Visual Studio 2019. Aggiornando gli script .yml e automatizzando il processo di installazione, puoi prevenire errori di compilazione comuni relativi ai file mancanti. Questo approccio proattivo non solo fa risparmiare tempo, ma migliora anche l'efficienza della pipeline CI/CD, consentendo build di progetti più fluidi e affidabili.