Vodič za ažuriranje .yml skripti za MSVC141 u GitHubu

Vodič za ažuriranje .yml skripti za MSVC141 u GitHubu
Vodič za ažuriranje .yml skripti za MSVC141 u GitHubu

Rješavanje problema s MSVC141 u GitHub radnjama

Radimo na projektu Visual Studio 2019 koji je nedavno počeo izbacivati ​​iznimke povezane s datotekama koje nedostaju, posebno 'atlbase.h'. Čini se da je ovaj problem nastao zbog nepostojanja skupa alata MSVC141, koji nije bio potreban do prije nekoliko mjeseci.

U ovom ćemo vas članku uputiti kako ažurirati svoje .yml skripte u GitHub Actions da biste uključili skup alata MSVC141. Ovo osigurava glatku izradu projekta i izbjegava pogrešku 'ne može otvoriti uključenu datoteku', pomažući vam u održavanju produktivnosti u vašem tijeku razvoja.

Naredba Opis
uses: microsoft/setup-msbuild@v1.1 Postavlja MSBuild za GitHub radnje, omogućujući izgradnju .NET projekata.
vs-version: 2019 Određuje verziju Visual Studio koja će se koristiti, osiguravajući kompatibilnost sa skupom alata MSVC141.
msbuild-version: 16.x Definira verziju MSBuild-a, usklađujući se s potrebnim skupom alata MSVC141 za kompilaciju.
extenda/actions/setup-nuget-sources@v0 Konfigurira NuGet izvore u GitHub radnjama, neophodne za vraćanje ovisnosti projekta.
nuget restore POS.sln Vraća NuGet pakete za navedeno rješenje, rješavajući sve ovisnosti prije izgradnje.
Copy-Item Kopira datoteke s jedne lokacije na drugu u PowerShell, ovdje se koristi za rukovanje predlošcima baze podataka.
Start-Process Pokreće novi proces u PowerShell, koristan za pokretanje programa za instalaciju ili drugih izvršnih datoteka.
vswhere.exe Uslužni program za lociranje instalacija Visual Studio, koji se koristi za provjeru prisutnosti MSVC141.

Integracija MSVC141 skupa alata u GitHub akcije

Gore navedene skripte osiguravaju da je skup alata MSVC141 uključen u vaš tijek rada GitHub Actions. Prva skripta ažurira YAML konfiguracijsku datoteku kako bi uključila korake potrebne za postavljanje potrebnih alata i okruženja. To uključuje postavljanje MSBuild-a pomoću microsoft/setup-msbuild@v1.1, navodeći verziju Visual Studio s vs-version: 2019, i osiguravanje da msbuild-version: 16.x koristi se. Ovi koraci osiguravaju da je okruženje za izgradnju ispravno konfigurirano za korištenje MSVC141.

Dodatno, skripta PowerShell provjerava prisutnost skupa alata MSVC141 pomoću vswhere.exe. Ako nije pronađena, skripta pokreće proces instalacije pokretanjem Start-Process s potrebnim argumentima za ugradnju komponenti koje nedostaju. Ovaj automatizirani pristup osigurava da je potreban skup alata dostupan, sprječavajući fatal error C1083 povezane s nedostajućim datotekama poput 'atlbase.h'. Slijedeći ove korake, možete održavati stabilan i dosljedan proces izgradnje za svoje projekte Visual Studio 2019 u GitHub Actions.

Ažurirajte .yml skriptu da uključi MSVC141 skup alata

GitHub radnje YAML konfiguracija

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

Osigurajte ispravan MSVC skup alata u GitHub radnjama

PowerShell skripta za provjeru i instalaciju 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

Osiguravanje kompatibilnosti s MSVC skupovima alata u GitHub radnjama

Održavanje kompatibilnosti s različitim setovima alata u okruženju kontinuirane integracije (CI) kao što je GitHub Actions presudno je za osiguravanje dosljednih izrada i minimiziranje pogrešaka. Jedan ključni aspekt je ažuriranje vaših konfiguracijskih datoteka s potrebnim alatima i ovisnostima. U slučaju MSVC141, važno je razumjeti da je ovaj skup alata neophodan za određene projekte, posebno one koji se oslanjaju na starije C++ biblioteke i komponente.

Uključivanje skupa alata MSVC141 u vašu postavku GitHub Actions ne uključuje samo određivanje ispravne verzije Visual Studija, već i osiguravanje da su sve ovisnosti razriješene. To uključuje ispravno konfiguriranje NuGet izvora i korištenje uslužnih programa poput vswhere.exe za provjeru instalacija. Automatiziranje ovih koraka unutar vašeg .yml i PowerShell skripte pomažu u sprječavanju neuspjeha izgradnje i održavaju vaš CI/CD cjevovod glatkim, čime se u konačnici štedi vrijeme i resursi za razvoj.

Uobičajena pitanja i rješenja za integraciju MSVC skupova alata

  1. Kako mogu odrediti verziju Visual Studio u GitHub radnjama?
  2. Koristiti vs-version: 2019 u vašem .yml konfiguraciju za postavljanje željene verzije Visual Studio.
  3. Što je vswhere.exe i zašto se koristi?
  4. vswhere.exe je uslužni program za lociranje instalacija Visual Studija, osiguravajući da su potrebni skupovi alata dostupni.
  5. Kako mogu automatizirati instalaciju komponenti koje nedostaju?
  6. Koristiti Start-Process u PowerShell za pokretanje instalacijskog programa s potrebnim argumentima za nenadzirane instalacije.
  7. Zašto je važno konfigurirati NuGet izvore?
  8. Konfiguriranje NuGet izvora osigurava da su sve ovisnosti projekta riješene, što je ključno za uspješne gradnje.
  9. Kako mogu provjeriti prisutnost alata MSVC141?
  10. Koristiti vswhere.exe u skripti za provjeru putanje instalacije skupa alata MSVC141.
  11. Što znači msbuild-version: 16.x navesti?
  12. Određuje MSBuild verziju koja će se koristiti, osiguravajući kompatibilnost sa skupom alata MSVC141.
  13. Kako mogu vratiti NuGet pakete u GitHub Actions?
  14. Koristite naredbu nuget restore nakon čega slijedi vaša datoteka rješenja, npr nuget restore POS.sln.
  15. Koja je svrha Setup MSBuild akcijski?
  16. Konfigurira okruženje za korištenje MSBuild-a, potrebnog za izgradnju .NET projekata u GitHub Actions.
  17. Kako mogu automatski preimenovati artefakte izrade?
  18. Koristite PowerShell naredbe poput Rename-Item za preimenovanje datoteka na temelju verzije međuverzije.
  19. Zašto uključiti distribution: 'temurin' u postavkama Jave?
  20. Ovo specificira JDK distribuciju za korištenje, osiguravajući da je ispravna verzija Java instalirana za vaš projekt.

Završne misli o integraciji MSVC141

Osiguravanje uključenosti skupa alata MSVC141 u vaš tijek rada GitHub Actions ključno je za održavanje stabilnosti i funkcionalnosti vaših Visual Studio 2019 projekata. Ažuriranjem vaših .yml skripti i automatiziranjem postupka instalacije možete spriječiti uobičajene pogreške u izradi povezane s datotekama koje nedostaju. Ovaj proaktivni pristup ne samo da štedi vrijeme, već i poboljšava učinkovitost vašeg CI/CD cjevovoda, omogućujući glatku i pouzdaniju izgradnju projekta.