Vodnik za posodobitev skriptov .yml za MSVC141 v GitHubu

Vodnik za posodobitev skriptov .yml za MSVC141 v GitHubu
Vodnik za posodobitev skriptov .yml za MSVC141 v GitHubu

Reševanje težav z MSVC141 v dejanjih GitHub

Delamo na projektu Visual Studio 2019, ki je pred kratkim začel ustvarjati izjeme, povezane z manjkajočimi datotekami, natančneje »atlbase.h«. Zdi se, da je ta težava posledica odsotnosti nabora orodij MSVC141, ki ni bil potreben do pred nekaj meseci.

V tem članku vas bomo vodili, kako posodobiti svoje skripte .yml v GitHub Actions, da vključite nabor orodij MSVC141. To zagotavlja nemoteno gradnjo projekta in se izogne ​​napaki »vključene datoteke ni mogoče odpreti«, kar vam pomaga vzdrževati produktivnost v delovnem procesu razvoja.

Ukaz Opis
uses: microsoft/setup-msbuild@v1.1 Nastavi MSBuild for GitHub Actions, ki omogoča gradnjo projektov .NET.
vs-version: 2019 Podaja različico Visual Studio za uporabo, kar zagotavlja združljivost z naborom orodij MSVC141.
msbuild-version: 16.x Definira različico MSBuild, ki je usklajena z zahtevanim naborom orodij MSVC141 za prevajanje.
extenda/actions/setup-nuget-sources@v0 Konfigurira vire NuGet v dejanjih GitHub, kar je bistveno za obnovitev odvisnosti projekta.
nuget restore POS.sln Obnovi pakete NuGet za določeno rešitev in razreši vse odvisnosti pred izdelavo.
Copy-Item Kopira datoteke z ene lokacije na drugo v lupini PowerShell, ki se tukaj uporablja za obdelavo predlog baze podatkov.
Start-Process Zažene nov proces v lupini PowerShell, uporaben za zagon namestitvenih programov ali drugih izvršljivih datotek.
vswhere.exe Pripomoček za iskanje namestitve Visual Studio, ki se uporablja za preverjanje prisotnosti MSVC141.

Integracija nabora orodij MSVC141 v dejanja GitHub

Zgornji skripti zagotavljajo, da je nabor orodij MSVC141 vključen v vaš potek dela GitHub Actions. Prvi skript posodobi konfiguracijsko datoteko YAML, da vključuje korake, potrebne za nastavitev zahtevanih orodij in okolij. To vključuje nastavitev MSBuild z uporabo microsoft/setup-msbuild@v1.1, pri čemer določite različico Visual Studio z vs-version: 2019, in zagotavljanje, da msbuild-version: 16.x se uporablja. Ti koraki zagotavljajo, da je gradbeno okolje pravilno konfigurirano za uporabo MSVC141.

Poleg tega skript PowerShell preveri prisotnost nabora orodij MSVC141 z uporabo vswhere.exe. Če ga ne najde, skript sproži postopek namestitve z zagonom Start-Process s potrebnimi argumenti za namestitev manjkajočih komponent. Ta samodejni pristop zagotavlja, da je na voljo zahtevani nabor orodij, kar preprečuje fatal error C1083 povezane z manjkajočimi vključujejo datoteke, kot je 'atlbase.h'. Če sledite tem korakom, lahko vzdržujete stabilen in dosleden postopek gradnje za svoje projekte Visual Studio 2019 v GitHub Actions.

Posodobite skript .yml, da bo vključeval nabor orodij MSVC141

Konfiguracija YAML dejanj 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\*

Zagotovite pravilen nabor orodij MSVC v dejanjih GitHub

Skript PowerShell za preverjanje in namestitev 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

Zagotavljanje združljivosti z nabori orodij MSVC v dejanjih GitHub

Ohranjanje združljivosti z različnimi nabori orodij v okolju neprekinjene integracije (CI), kot je GitHub Actions, je ključnega pomena za zagotavljanje doslednih gradenj in zmanjševanje napak. Eden ključnih vidikov je posodabljanje vaših konfiguracijskih datotek s potrebnimi orodji in odvisnostmi. V primeru MSVC141 je pomembno razumeti, da je ta nabor orodij bistven za nekatere projekte, zlasti tiste, ki se zanašajo na starejše knjižnice in komponente C++.

Vključitev nabora orodij MSVC141 v vašo nastavitev GitHub Actions ne vključuje samo določanja pravilne različice Visual Studio, temveč tudi zagotavljanje razrešenosti vseh odvisnosti. To vključuje pravilno konfiguracijo virov NuGet in uporabo pripomočkov, kot je vswhere.exe za preverjanje inštalacij. Avtomatizacija teh korakov v vašem .yml in skripti PowerShell pomagajo preprečiti napake pri gradnji in skrbijo za nemoteno delovanje vašega cevovoda CI/CD, kar na koncu prihrani razvojni čas in vire.

Pogosta vprašanja in rešitve za integracijo naborov orodij MSVC

  1. Kako določim različico Visual Studio v GitHub Actions?
  2. Uporaba vs-version: 2019 v tvojem .yml konfiguracijo, da nastavite želeno različico Visual Studio.
  3. Kaj je vswhere.exe in zakaj se uporablja?
  4. vswhere.exe je pripomoček za iskanje namestitve Visual Studio, ki zagotavlja, da so na voljo potrebni nabori orodij.
  5. Kako lahko avtomatiziram namestitev manjkajočih komponent?
  6. Uporaba Start-Process v PowerShell za zagon namestitvenega programa s potrebnimi argumenti za nenadzorovane namestitve.
  7. Zakaj je pomembno konfigurirati vire NuGet?
  8. Konfiguriranje virov NuGet zagotavlja razrešitev vseh odvisnosti projekta, kar je ključnega pomena za uspešne gradnje.
  9. Kako preverim prisotnost nabora orodij MSVC141?
  10. Uporaba vswhere.exe v skriptu za preverjanje namestitvene poti kompleta orodij MSVC141.
  11. Kaj počne msbuild-version: 16.x določiti?
  12. Določa različico MSBuild, ki bo uporabljena, kar zagotavlja združljivost z naborom orodij MSVC141.
  13. Kako obnovim pakete NuGet v GitHub Actions?
  14. Uporabite ukaz nuget restore ki ji sledi vaša datoteka rešitve, na primer nuget restore POS.sln.
  15. Kakšen je namen Setup MSBuild akcija?
  16. Konfigurira okolje za uporabo MSBuild, potrebnega za gradnjo projektov .NET v GitHub Actions.
  17. Kako lahko samodejno preimenujem artefakte gradnje?
  18. Uporabite ukaze PowerShell, kot je Rename-Item za preimenovanje datotek glede na gradbeno različico.
  19. Zakaj vključiti distribution: 'temurin' v nastavitvah Jave?
  20. To določa distribucijo JDK za uporabo, kar zagotavlja, da je za vaš projekt nameščena pravilna različica Jave.

Končne misli o integraciji MSVC141

Zagotavljanje, da je nabor orodij MSVC141 vključen v vaš potek dela GitHub Actions, je bistveno za ohranjanje stabilnosti in funkcionalnosti vaših projektov Visual Studio 2019. Če posodobite skripte .yml in avtomatizirate postopek namestitve, lahko preprečite pogoste napake pri gradnji, povezane z manjkajočimi datotekami. Ta proaktivni pristop ne le prihrani čas, ampak tudi izboljša učinkovitost vašega cevovoda CI/CD, kar omogoča bolj gladke in zanesljivejše gradnje projektov.