Vejledning til opdatering af .yml-scripts til MSVC141 i GitHub

Vejledning til opdatering af .yml-scripts til MSVC141 i GitHub
Vejledning til opdatering af .yml-scripts til MSVC141 i GitHub

Løsning af MSVC141-problemer i GitHub-handlinger

Vi arbejder på et Visual Studio 2019-projekt, der for nylig begyndte at smide undtagelser relateret til manglende filer, specifikt 'atlbase.h'. Dette problem ser ud til at skyldes fraværet af MSVC141-værktøjssættet, som ikke var påkrævet før for et par måneder siden.

I denne artikel vil vi guide dig til, hvordan du opdaterer dine .yml-scripts i GitHub Actions, så de inkluderer MSVC141-værktøjssættet. Dette sikrer problemfri projektopbygning og undgår fejlen 'kan ikke åbne inkludere fil', hvilket hjælper dig med at bevare produktiviteten i dit udviklingsarbejdsgang.

Kommando Beskrivelse
uses: microsoft/setup-msbuild@v1.1 Opsætter MSBuild til GitHub Actions, hvilket muliggør opbygning af .NET-projekter.
vs-version: 2019 Angiver den version af Visual Studio, der skal bruges, hvilket sikrer kompatibilitet med MSVC141-værktøjssættet.
msbuild-version: 16.x Definerer MSBuild-versionen, tilpasser sig det nødvendige MSVC141-værktøjssæt til kompilering.
extenda/actions/setup-nuget-sources@v0 Konfigurerer NuGet-kilder i GitHub Actions, som er afgørende for at gendanne projektafhængigheder.
nuget restore POS.sln Gendanner NuGet-pakker til den angivne løsning, og løser alle afhængigheder før build.
Copy-Item Kopierer filer fra en placering til en anden i PowerShell, der bruges her til håndtering af databaseskabeloner.
Start-Process Starter en ny proces i PowerShell, nyttig til at køre installationsprogrammer eller andre eksekverbare programmer.
vswhere.exe Et værktøj til at lokalisere Visual Studio-installationer, der bruges til at kontrollere tilstedeværelsen af ​​MSVC141.

Integrering af MSVC141 Toolset i GitHub Actions

De ovenfor angivne scripts sikrer, at MSVC141-værktøjssættet er inkluderet i din GitHub Actions-arbejdsgang. Det første script opdaterer YAML-konfigurationsfilen til at inkludere trin, der er nødvendige for at opsætte de nødvendige værktøjer og miljøer. Dette inkluderer opsætning af MSBuild vha microsoft/setup-msbuild@v1.1, med angivelse af Visual Studio-versionen med vs-version: 2019, og sikre, at msbuild-version: 16.x anvendes. Disse trin sikrer, at byggemiljøet er korrekt konfigureret til at bruge MSVC141.

Derudover kontrollerer PowerShell-scriptet for tilstedeværelsen af ​​MSVC141-værktøjssættet, der bruger vswhere.exe. Hvis det ikke findes, starter scriptet installationsprocessen ved at køre Start-Process med de nødvendige argumenter for at installere de manglende komponenter. Denne automatiserede tilgang sikrer, at det nødvendige værktøjssæt er tilgængeligt, hvilket forhindrer fatal error C1083 relateret til manglende inkludere filer som 'atlbase.h'. Ved at følge disse trin kan du opretholde en stabil og konsistent byggeproces for dine Visual Studio 2019-projekter i GitHub Actions.

Opdater .yml-script til at inkludere MSVC141-værktøjssæt

GitHub Actions YAML-konfiguration

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

Sørg for korrekt MSVC-værktøjssæt i GitHub-handlinger

PowerShell-script til kontrol og installation af 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

Sikring af kompatibilitet med MSVC-værktøjssæt i GitHub-handlinger

Opretholdelse af kompatibilitet med forskellige værktøjssæt i et kontinuerligt integrationsmiljø (CI) som GitHub Actions er afgørende for at sikre ensartede builds og minimere fejl. Et nøgleaspekt er at holde dine konfigurationsfiler ajour med de nødvendige værktøjer og afhængigheder. I tilfælde af MSVC141 er det vigtigt at forstå, at dette værktøjssæt er afgørende for visse projekter, især dem, der er afhængige af ældre C++-biblioteker og -komponenter.

Inkludering af MSVC141-værktøjssættet i din GitHub Actions-opsætning involverer ikke kun at angive den korrekte Visual Studio-version, men også at sikre, at alle afhængigheder er løst. Dette omfatter konfiguration af NuGet-kilder korrekt og brug af hjælpeprogrammer som f.eks vswhere.exe at verificere installationer. Automatisering af disse trin i din .yml og PowerShell-scripts hjælper med at forhindre byggefejl og holder din CI/CD-pipeline kørende, hvilket i sidste ende sparer udviklingstid og ressourcer.

Almindelige spørgsmål og løsninger til integration af MSVC-værktøjssæt

  1. Hvordan angiver jeg Visual Studio-versionen i GitHub Actions?
  2. Brug vs-version: 2019 i din .yml konfiguration for at indstille den ønskede Visual Studio-version.
  3. Hvad er vswhere.exe og hvorfor bruges det?
  4. vswhere.exe er et værktøj til at lokalisere Visual Studio-installationer, der sikrer, at de nødvendige værktøjssæt er tilgængelige.
  5. Hvordan kan jeg automatisere installationen af ​​manglende komponenter?
  6. Brug Start-Process i PowerShell for at køre installationsprogrammet med de nødvendige argumenter for uovervågede installationer.
  7. Hvorfor er det vigtigt at konfigurere NuGet-kilder?
  8. Konfiguration af NuGet-kilder sikrer, at alle projektafhængigheder bliver løst, hvilket er afgørende for succesfulde builds.
  9. Hvordan kontrollerer jeg tilstedeværelsen af ​​MSVC141-værktøjssæt?
  10. Brug vswhere.exe i et script for at bekræfte installationsstien til MSVC141-værktøjssættet.
  11. Hvad gør msbuild-version: 16.x specificere?
  12. Den specificerer MSBuild-versionen, der skal bruges, hvilket sikrer kompatibilitet med MSVC141-værktøjssættet.
  13. Hvordan gendanner jeg NuGet-pakker i GitHub Actions?
  14. Brug kommandoen nuget restore efterfulgt af din løsningsfil, f.eks nuget restore POS.sln.
  15. Hvad er formålet med Setup MSBuild handling?
  16. Det konfigurerer miljøet til at bruge MSBuild, som er nødvendigt for at bygge .NET-projekter i GitHub Actions.
  17. Hvordan kan jeg omdøbe byggeartefakter automatisk?
  18. Brug PowerShell-kommandoer som f.eks Rename-Item at omdøbe filer baseret på byggeversionen.
  19. Hvorfor inkludere distribution: 'temurin' i Java-opsætningen?
  20. Dette angiver den JDK-distribution, der skal bruges, hvilket sikrer, at den korrekte Java-version er installeret til dit projekt.

Endelige tanker om integration af MSVC141

At sikre, at MSVC141-værktøjssættet er inkluderet i din GitHub Actions-arbejdsgang er afgørende for at opretholde stabiliteten og funktionaliteten af ​​dine Visual Studio 2019-projekter. Ved at opdatere dine .yml-scripts og automatisere installationsprocessen kan du forhindre almindelige build-fejl relateret til manglende filer. Denne proaktive tilgang sparer ikke kun tid, men øger også effektiviteten af ​​din CI/CD-pipeline, hvilket giver mulighed for jævnere og mere pålidelige projektopbygninger.