Ghid pentru actualizarea scripturilor .yml pentru MSVC141 în GitHub

Ghid pentru actualizarea scripturilor .yml pentru MSVC141 în GitHub
Ghid pentru actualizarea scripturilor .yml pentru MSVC141 în GitHub

Rezolvarea problemelor MSVC141 în acțiunile GitHub

Lucrăm la un proiect Visual Studio 2019 care a început recent să arunce excepții legate de fișierele lipsă, în special „atlbase.h”. Această problemă pare să se datoreze absenței setului de instrumente MSVC141, care nu a fost necesar până acum câteva luni.

În acest articol, vă vom îndruma cum să vă actualizați scripturile .yml în GitHub Actions pentru a include setul de instrumente MSVC141. Acest lucru asigură construirea netedă a proiectelor și evită eroarea „nu se poate deschide fișierul include”, ajutându-vă să mențineți productivitatea în fluxul de lucru de dezvoltare.

Comanda Descriere
uses: microsoft/setup-msbuild@v1.1 Configurați MSBuild pentru GitHub Actions, permițând construirea de proiecte .NET.
vs-version: 2019 Specifică versiunea de Visual Studio de utilizat, asigurând compatibilitatea cu setul de instrumente MSVC141.
msbuild-version: 16.x Definește versiunea MSBuild, aliniindu-se cu setul de instrumente MSVC141 necesar pentru compilare.
extenda/actions/setup-nuget-sources@v0 Configurați sursele NuGet în GitHub Actions, esențial pentru restabilirea dependențelor proiectului.
nuget restore POS.sln Restaurează pachetele NuGet pentru soluția specificată, rezolvând toate dependențele înainte de compilare.
Copy-Item Copiază fișierele dintr-o locație în alta în PowerShell, utilizate aici pentru gestionarea șabloanelor de baze de date.
Start-Process Pornește un nou proces în PowerShell, util pentru rularea programelor de instalare sau a altor executabile.
vswhere.exe Un utilitar pentru a localiza instalațiile Visual Studio, folosit pentru a verifica prezența MSVC141.

Integrarea setului de instrumente MSVC141 în GitHub Actions

Scripturile furnizate mai sus asigură că setul de instrumente MSVC141 este inclus în fluxul de lucru GitHub Actions. Primul script actualizează fișierul de configurare YAML pentru a include pașii necesari pentru configurarea instrumentelor și a mediilor necesare. Aceasta include configurarea MSBuild folosind microsoft/setup-msbuild@v1.1, specificând versiunea Visual Studio cu vs-version: 2019, și asigurându-se că msbuild-version: 16.x este folosit. Acești pași asigură că mediul de construcție este configurat corect pentru a utiliza MSVC141.

În plus, scriptul PowerShell verifică prezența setului de instrumente MSVC141 folosind vswhere.exe. Dacă nu este găsit, scriptul inițiază procesul de instalare prin rulare Start-Process cu argumentele necesare instalării componentelor lipsă. Această abordare automată asigură că setul de instrumente necesar este disponibil, prevenind fatal error C1083 legate de lipsa include fișiere precum „atlbase.h”. Urmând acești pași, puteți menține un proces de compilare stabil și consistent pentru proiectele dvs. Visual Studio 2019 în GitHub Actions.

Actualizați scriptul .yml pentru a include setul de instrumente MSVC141

Configurare YAML GitHub Actions

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\*

Asigurați setul de instrumente MSVC corect în acțiunile GitHub

Script PowerShell pentru verificarea și instalarea 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

Asigurarea compatibilității cu seturile de instrumente MSVC în acțiunile GitHub

Menținerea compatibilității cu diverse seturi de instrumente într-un mediu de integrare continuă (CI) precum GitHub Actions este esențială pentru asigurarea unor versiuni consistente și pentru minimizarea erorilor. Un aspect cheie este să vă păstrați fișierele de configurare la zi cu instrumentele și dependențele necesare. În cazul MSVC141, este important să înțelegeți că acest set de instrumente este esențial pentru anumite proiecte, în special pentru cele care se bazează pe biblioteci și componente C++ mai vechi.

Includerea setului de instrumente MSVC141 în configurarea GitHub Actions implică nu numai specificarea versiunii corecte a Visual Studio, ci și asigurarea că toate dependențele sunt rezolvate. Aceasta include configurarea corectă a surselor NuGet și utilizarea utilităților precum vswhere.exe pentru a verifica instalațiile. Automatizarea acestor pași în interiorul dvs .yml și scripturile PowerShell ajută la prevenirea eșecurilor de construcție și mențin canalul CI/CD să funcționeze fără probleme, economisind în cele din urmă timp și resurse de dezvoltare.

Întrebări și soluții comune pentru integrarea setului de instrumente MSVC

  1. Cum specific versiunea Visual Studio în GitHub Actions?
  2. Utilizare vs-version: 2019 în dumneavoastră .yml configurație pentru a seta versiunea Visual Studio dorită.
  3. Ce este vswhere.exe si de ce se foloseste?
  4. vswhere.exe este un utilitar pentru a localiza instalațiile Visual Studio, asigurându-se că seturile de instrumente necesare sunt disponibile.
  5. Cum pot automatiza instalarea componentelor lipsă?
  6. Utilizare Start-Process în PowerShell pentru a rula programul de instalare cu argumentele necesare pentru instalările nesupravegheate.
  7. De ce este important să configurați sursele NuGet?
  8. Configurarea surselor NuGet asigură rezolvarea tuturor dependențelor proiectului, ceea ce este crucial pentru versiunile de succes.
  9. Cum verific prezența setului de instrumente MSVC141?
  10. Utilizare vswhere.exe într-un script pentru a verifica calea de instalare a setului de instrumente MSVC141.
  11. Ce face msbuild-version: 16.x specifica?
  12. Specifică versiunea MSBuild care trebuie utilizată, asigurând compatibilitatea cu setul de instrumente MSVC141.
  13. Cum refac pachetele NuGet în GitHub Actions?
  14. Utilizați comanda nuget restore urmat de fișierul de soluție, cum ar fi nuget restore POS.sln.
  15. Care este scopul Setup MSBuild acțiune?
  16. Configura mediul pentru a utiliza MSBuild, necesar pentru construirea proiectelor .NET în GitHub Actions.
  17. Cum pot redenumi automat artefactele de construcție?
  18. Utilizați comenzi PowerShell, cum ar fi Rename-Item pentru a redenumi fișierele în funcție de versiunea de compilare.
  19. De ce include distribution: 'temurin' în configurarea Java?
  20. Aceasta specifică distribuția JDK de utilizat, asigurându-se că versiunea Java corectă este instalată pentru proiectul dvs.

Gânduri finale despre integrarea MSVC141

Asigurarea că setul de instrumente MSVC141 este inclus în fluxul de lucru GitHub Actions este esențială pentru menținerea stabilității și funcționalității proiectelor dvs. Visual Studio 2019. Prin actualizarea scripturilor .yml și automatizarea procesului de instalare, puteți preveni erorile comune de compilare legate de fișierele lipsă. Această abordare proactivă nu numai că economisește timp, dar îmbunătățește și eficiența conductei CI/CD, permițând construirea proiectelor mai fluide și mai fiabile.