Sprievodca aktualizáciou skriptov .yml pre MSVC141 v GitHub

Sprievodca aktualizáciou skriptov .yml pre MSVC141 v GitHub
Sprievodca aktualizáciou skriptov .yml pre MSVC141 v GitHub

Riešenie problémov MSVC141 v akciách GitHub

Pracujeme na projekte Visual Studio 2019, ktorý nedávno začal vyvolávať výnimky súvisiace s chýbajúcimi súbormi, konkrétne 'atlbase.h'. Zdá sa, že tento problém je spôsobený absenciou sady nástrojov MSVC141, ktorá sa ešte pred niekoľkými mesiacmi nevyžadovala.

V tomto článku vás prevedieme, ako aktualizovať skripty .yml v akciách GitHub tak, aby obsahovali sadu nástrojov MSVC141. To zaisťuje plynulé zostavovanie projektu a predchádza chybe „nemožno otvoriť zahrnutý súbor“, čo vám pomáha udržiavať produktivitu vo vašom pracovnom postupe vývoja.

Príkaz Popis
uses: microsoft/setup-msbuild@v1.1 Nastaví MSBuild pre akcie GitHub, čo umožňuje vytváranie projektov .NET.
vs-version: 2019 Určuje verziu Visual Studio, ktorá sa má použiť, čím sa zabezpečí kompatibilita so sadou nástrojov MSVC141.
msbuild-version: 16.x Definuje verziu MSBuild v súlade s požadovanou sadou nástrojov MSVC141 na kompiláciu.
extenda/actions/setup-nuget-sources@v0 Konfiguruje zdroje NuGet v akciách GitHub, ktoré sú nevyhnutné na obnovenie závislostí projektu.
nuget restore POS.sln Obnoví balíčky NuGet pre zadané riešenie a vyrieši všetky závislosti pred zostavením.
Copy-Item Skopíruje súbory z jedného miesta na druhé v PowerShell, ktoré sa tu používa na prácu so šablónami databázy.
Start-Process Spustí nový proces v prostredí PowerShell, ktorý je užitočný pri spúšťaní inštalačných programov alebo iných spustiteľných súborov.
vswhere.exe Pomôcka na vyhľadanie inštalácií Visual Studio, ktorá sa používa na kontrolu prítomnosti MSVC141.

Integrácia sady nástrojov MSVC141 do akcií GitHub

Skripty uvedené vyššie zabezpečujú, že súprava nástrojov MSVC141 je zahrnutá do vášho pracovného postupu akcií GitHub. Prvý skript aktualizuje konfiguračný súbor YAML tak, aby obsahoval kroky potrebné na nastavenie požadovaných nástrojov a prostredí. To zahŕňa nastavenie pomocou MSBuild microsoft/setup-msbuild@v1.1, s uvedením verzie Visual Studio s vs-version: 2019a zabezpečiť, aby msbuild-version: 16.x sa používa. Tieto kroky zabezpečia, že prostredie zostavy je správne nakonfigurované na používanie MSVC141.

Skript PowerShell navyše kontroluje prítomnosť používanej sady nástrojov MSVC141 vswhere.exe. Ak sa nenájde, skript spustí proces inštalácie spustením Start-Process s potrebnými argumentmi na inštaláciu chýbajúcich komponentov. Tento automatizovaný prístup zabezpečuje, že je k dispozícii požadovaná sada nástrojov, čím sa predchádza fatal error C1083 súvisiace s chýbajúcimi zahrnutými súbormi ako 'atlbase.h'. Podľa týchto krokov môžete udržiavať stabilný a konzistentný proces zostavovania pre svoje projekty Visual Studio 2019 v akciách GitHub.

Aktualizujte skript .yml tak, aby obsahoval sadu nástrojov MSVC141

Akcie GitHub Konfigurácia YAML

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

Zabezpečte správnu sadu nástrojov MSVC v akciách GitHub

Skript PowerShell na kontrolu a inštaláciu 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

Zabezpečenie kompatibility so sadami nástrojov MSVC v akciách GitHub

Udržiavanie kompatibility s rôznymi sadami nástrojov v prostredí nepretržitej integrácie (CI), ako je GitHub Actions, je kľúčové pre zabezpečenie konzistentných zostavení a minimalizáciu chýb. Jedným z kľúčových aspektov je udržiavať vaše konfiguračné súbory aktuálne s potrebnými nástrojmi a závislosťami. V prípade MSVC141 je dôležité pochopiť, že táto sada nástrojov je nevyhnutná pre určité projekty, najmä tie, ktoré sa spoliehajú na staršie knižnice a komponenty C++.

Zahrnutie sady nástrojov MSVC141 do nastavenia akcií GitHub zahŕňa nielen zadanie správnej verzie Visual Studio, ale aj zabezpečenie vyriešenia všetkých závislostí. To zahŕňa správnu konfiguráciu zdrojov NuGet a používanie nástrojov ako vswhere.exe na overenie inštalácií. Automatizácia týchto krokov v rámci vášho .yml a skripty PowerShell pomáhajú predchádzať zlyhaniam pri zostavovaní a udržiavajú hladký chod vášho CI/CD kanála, čo v konečnom dôsledku šetrí čas a zdroje na vývoj.

Bežné otázky a riešenia pre integráciu sád nástrojov MSVC

  1. Ako určím verziu Visual Studio v akciách GitHub?
  2. Použite vs-version: 2019 v tvojom .yml konfiguráciu na nastavenie požadovanej verzie Visual Studio.
  3. Čo je vswhere.exe a prečo sa používa?
  4. vswhere.exe je pomôcka na lokalizáciu inštalácií Visual Studio, ktorá zabezpečuje, že sú k dispozícii požadované sady nástrojov.
  5. Ako môžem automatizovať inštaláciu chýbajúcich komponentov?
  6. Použite Start-Process v PowerShell na spustenie inštalačného programu s potrebnými argumentmi pre bezobslužné inštalácie.
  7. Prečo je dôležité nakonfigurovať zdroje NuGet?
  8. Konfigurácia zdrojov NuGet zaisťuje vyriešenie všetkých závislostí projektu, čo je kľúčové pre úspešné zostavenia.
  9. Ako skontrolujem prítomnosť sady nástrojov MSVC141?
  10. Použite vswhere.exe v skripte na overenie inštalačnej cesty sady nástrojov MSVC141.
  11. Čo robí msbuild-version: 16.x špecifikovať?
  12. Špecifikuje verziu MSBuild, ktorá sa má použiť, čím sa zabezpečí kompatibilita so sadou nástrojov MSVC141.
  13. Ako obnovím balíčky NuGet v akciách GitHub?
  14. Použite príkaz nuget restore nasledovaný súborom vášho riešenia, napr nuget restore POS.sln.
  15. Aký je účel Setup MSBuild akcia?
  16. Konfiguruje prostredie na používanie MSBuild, ktorý je potrebný na vytváranie projektov .NET v akciách GitHub.
  17. Ako môžem automaticky premenovať artefakty zostavy?
  18. Použite príkazy PowerShell, ako napr Rename-Item premenovať súbory na základe verzie zostavy.
  19. Prečo zahrnúť distribution: 'temurin' v nastaveniach Java?
  20. Toto špecifikuje distribúciu JDK, ktorá sa má použiť, čím sa zabezpečí, že pre váš projekt je nainštalovaná správna verzia Java.

Záverečné myšlienky o integrácii MSVC141

Zabezpečenie zahrnutia sady nástrojov MSVC141 do vášho pracovného postupu akcií GitHub je nevyhnutné na udržanie stability a funkčnosti vašich projektov Visual Studio 2019. Aktualizáciou skriptov .yml a automatizáciou procesu inštalácie môžete zabrániť bežným chybám pri zostavovaní súvisiacich s chýbajúcimi súbormi. Tento proaktívny prístup nielen šetrí čas, ale tiež zvyšuje efektivitu vášho CI/CD potrubia, čo umožňuje plynulejšie a spoľahlivejšie zostavovanie projektov.