Juhend .yml-skriptide värskendamiseks GitHubis MSVC141 jaoks

Juhend .yml-skriptide värskendamiseks GitHubis MSVC141 jaoks
Juhend .yml-skriptide värskendamiseks GitHubis MSVC141 jaoks

MSVC141 probleemide lahendamine GitHubi toimingutes

Töötame Visual Studio 2019 projekti kallal, mis hiljuti hakkas tegema erandeid seoses puuduvate failidega, täpsemalt failiga „atlbase.h”. See probleem näib olevat tingitud MSVC141 tööriistakomplekti puudumisest, mida ei nõutud alles paar kuud tagasi.

Selles artiklis juhendame teid, kuidas värskendada oma .yml-skripte rakenduses GitHub Actions, et kaasata tööriistakomplekt MSVC141. See tagab sujuva projekti koostamise ja väldib tõrke „ei saa avada, kaasa arvatud faili” tekkimist, aidates teil arendustöövoo tootlikkust säilitada.

Käsk Kirjeldus
uses: microsoft/setup-msbuild@v1.1 Seadistab MSBuildi GitHub Actionsi jaoks, mis võimaldab luua .NET-projekte.
vs-version: 2019 Määrab kasutatava Visual Studio versiooni, tagades ühilduvuse tööriistakomplektiga MSVC141.
msbuild-version: 16.x Määrab MSBuildi versiooni, joondades koostamiseks vajaliku MSVC141 tööriistakomplektiga.
extenda/actions/setup-nuget-sources@v0 Konfigureerib GitHub Actionsis NuGeti allikad, mis on projekti sõltuvuste taastamiseks hädavajalikud.
nuget restore POS.sln Taastab määratud lahenduse NuGeti paketid, lahendades kõik sõltuvused enne ehitamist.
Copy-Item Kopeerib failid PowerShellis ühest asukohast teise, mida kasutatakse siin andmebaasimallide haldamiseks.
Start-Process Käivitab PowerShellis uue protsessi, mis on kasulik installiprogrammide või muude käivitatavate failide käitamiseks.
vswhere.exe Utiliit Visual Studio installide leidmiseks, mida kasutatakse MSVC141 olemasolu kontrollimiseks.

MSVC141 tööriistakomplekti integreerimine GitHubi toimingutesse

Ülaltoodud skriptid tagavad, et tööriistakomplekt MSVC141 kaasatakse teie GitHubi toimingute töövoogu. Esimene skript värskendab YAML-i konfiguratsioonifaili, et hõlmata vajalike tööriistade ja keskkondade seadistamiseks vajalikke samme. See hõlmab MSBuildi seadistamist kasutades microsoft/setup-msbuild@v1.1, määrates Visual Studio versiooni koos vs-version: 2019ja tagades, et msbuild-version: 16.x kasutatakse. Need sammud tagavad, et ehituskeskkond on MSVC141 kasutamiseks õigesti konfigureeritud.

Lisaks kontrollib PowerShelli skript MSVC141 tööriistakomplekti olemasolu vswhere.exe. Kui seda ei leita, käivitab skript käivitamise installiprotsessi Start-Process puuduvate komponentide installimiseks vajalike argumentidega. See automatiseeritud lähenemine tagab, et vajalik tööriistakomplekt on saadaval, vältides fatal error C1083 seotud puuduvate failidega nagu 'atlbase.h'. Järgides neid samme, saate GitHub Actionsis säilitada oma Visual Studio 2019 projektide stabiilse ja järjepideva ehitusprotsessi.

Värskendage .yml skripti, et kaasata MSVC141 tööriistakomplekt

GitHubi toimingute YAML-i konfiguratsioon

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

Veenduge, et GitHubi toimingutes oleks õige MSVC tööriistakomplekt

PowerShelli skript MSVC141 kontrollimiseks ja installimiseks

$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

Ühilduvuse tagamine MSVC tööriistakomplektidega GitHubi toimingutes

Ühilduvuse säilitamine erinevate tööriistakomplektidega pideva integreerimise (CI) keskkonnas, nagu GitHub Actions, on järjepidevate koostamiste tagamiseks ja vigade minimeerimiseks ülioluline. Üks peamisi aspekte on hoida oma konfiguratsioonifailid vajalike tööriistade ja sõltuvustega ajakohasena. MSVC141 puhul on oluline mõista, et see tööriistakomplekt on teatud projektide jaoks hädavajalik, eriti nende jaoks, mis tuginevad vanematele C++ teekidele ja komponentidele.

MSVC141 tööriistakomplekti kaasamine GitHubi toimingute seadistusse hõlmab mitte ainult õige Visual Studio versiooni määramist, vaid ka kõigi sõltuvuste lahendamise tagamist. See hõlmab NuGeti allikate õiget konfigureerimist ja näiteks utiliitide kasutamist vswhere.exe paigalduste kontrollimiseks. Nende sammude automatiseerimine teie .yml ja PowerShelli skriptid aitavad vältida koostamise tõrkeid ja hoiavad teie CI/CD konveieri tõrgeteta töös, säästes kokkuvõttes arendusaega ja ressursse.

Levinud küsimused ja lahendused MSVC tööriistakomplektide integreerimiseks

  1. Kuidas määrata GitHub Actionsis Visual Studio versiooni?
  2. Kasuta vs-version: 2019 sinus .yml konfiguratsiooni, et määrata soovitud Visual Studio versioon.
  3. Mis on vswhere.exe ja miks seda kasutatakse?
  4. vswhere.exe on utiliit Visual Studio installide leidmiseks, tagades vajalike tööriistakomplektide olemasolu.
  5. Kuidas automatiseerida puuduvate komponentide installimist?
  6. Kasuta Start-Process PowerShellis, et käivitada installer järelevalveta installimiseks vajalike argumentidega.
  7. Miks on NuGeti allikate konfigureerimine oluline?
  8. NuGeti allikate konfigureerimine tagab, et kõik projektisõltuvused on lahendatud, mis on edukate ehitamiste jaoks ülioluline.
  9. Kuidas kontrollida tööriistakomplekti MSVC141 olemasolu?
  10. Kasuta vswhere.exe skriptis, et kontrollida tööriistakomplekti MSVC141 installiteed.
  11. Mis teeb msbuild-version: 16.x täpsustada?
  12. See määrab kasutatava MSBuildi versiooni, tagades ühilduvuse tööriistakomplektiga MSVC141.
  13. Kuidas taastada NuGeti paketid GitHub Actionsis?
  14. Kasutage käsku nuget restore millele järgneb teie lahendusfail, näiteks nuget restore POS.sln.
  15. Mis on eesmärk Setup MSBuild tegevus?
  16. See konfigureerib keskkonna MSBuildi kasutamiseks, mis on vajalik GitHub Actionsis .NET-projektide loomiseks.
  17. Kuidas saan ehitusartefakte automaatselt ümber nimetada?
  18. Kasutage PowerShelli käske nagu Rename-Item failide ümbernimetamiseks ehitusversiooni alusel.
  19. Miks kaasata distribution: 'temurin' Java seadistuses?
  20. See määrab kasutatava JDK distributsiooni, tagades, et teie projekti jaoks on installitud õige Java versioon.

Viimased mõtted MSVC141 integreerimise kohta

MSVC141 tööriistakomplekti kaasamine teie GitHubi toimingute töövoogu on oluline teie Visual Studio 2019 projektide stabiilsuse ja funktsionaalsuse säilitamiseks. Värskendades oma .yml-skripte ja automatiseerides installiprotsessi, saate vältida puuduvate failidega seotud levinumaid koostamisvigu. See ennetav lähenemisviis mitte ainult ei säästa aega, vaid suurendab ka teie CI/CD konveieri tõhusust, võimaldades projektide sujuvamat ja usaldusväärsemat koostamist.