Rokasgrāmata .yml skriptu atjaunināšanai MSVC141 pakalpojumā GitHub

Rokasgrāmata .yml skriptu atjaunināšanai MSVC141 pakalpojumā GitHub
Rokasgrāmata .yml skriptu atjaunināšanai MSVC141 pakalpojumā GitHub

MSVC141 problēmu risināšana GitHub darbībās

Mēs strādājam pie Visual Studio 2019 projekta, kurā nesen tika ieviesti izņēmumi saistībā ar trūkstošiem failiem, īpaši “atlbase.h”. Šķiet, ka šī problēma ir saistīta ar MSVC141 rīkkopas trūkumu, kas nebija vajadzīgs tikai pirms dažiem mēnešiem.

Šajā rakstā mēs sniegsim norādījumus par to, kā atjaunināt .yml skriptus pakalpojumā GitHub Actions, lai iekļautu rīkkopu MSVC141. Tas nodrošina vienmērīgu projektu veidošanu un novērš kļūdu “nevar atvērt, iekļaujot failu”, palīdzot saglabāt produktivitāti izstrādes darbplūsmā.

Pavēli Apraksts
uses: microsoft/setup-msbuild@v1.1 Iestata MSBuild for GitHub Actions, ļaujot veidot .NET projektus.
vs-version: 2019 Norāda izmantojamo Visual Studio versiju, nodrošinot saderību ar MSVC141 rīku kopu.
msbuild-version: 16.x Definē MSBuild versiju, saskaņojot ar kompilācijai nepieciešamo MSVC141 rīku kopu.
extenda/actions/setup-nuget-sources@v0 Konfigurē NuGet avotus GitHub Actions, kas ir būtiski, lai atjaunotu projekta atkarības.
nuget restore POS.sln Atjauno NuGet pakotnes norādītajam risinājumam, atrisinot visas atkarības pirms izveides.
Copy-Item Kopē failus no vienas vietas uz citu programmā PowerShell, ko šeit izmanto datu bāzes veidņu apstrādei.
Start-Process Sāk jaunu procesu programmā PowerShell, kas noder instalētāju vai citu izpildāmo failu palaišanai.
vswhere.exe Lietderība Visual Studio instalāciju atrašanai, ko izmanto, lai pārbaudītu MSVC141 klātbūtni.

MSVC141 rīkkopas integrēšana GitHub darbībās

Iepriekš sniegtie skripti nodrošina, ka MSVC141 rīku kopa ir iekļauta jūsu GitHub Actions darbplūsmā. Pirmais skripts atjaunina YAML konfigurācijas failu, iekļaujot tajā nepieciešamās darbības, lai iestatītu nepieciešamos rīkus un vidi. Tas ietver MSBuild iestatīšanu, izmantojot microsoft/setup-msbuild@v1.1, norādot Visual Studio versiju ar vs-version: 2019, un nodrošinot, ka msbuild-version: 16.x tiek izmantots. Šīs darbības nodrošina, ka veidošanas vide ir pareizi konfigurēta, lai izmantotu MSVC141.

Turklāt PowerShell skripts pārbauda MSVC141 rīkkopas klātbūtni, izmantojot vswhere.exe. Ja tas netiek atrasts, skripts sāk instalēšanas procesu, palaižot Start-Process ar nepieciešamajiem argumentiem, lai instalētu trūkstošās sastāvdaļas. Šī automatizētā pieeja nodrošina, ka ir pieejams nepieciešamais rīku komplekts, novēršot fatal error C1083 saistībā ar trūkstošajiem ietver tādus failus kā "atlbase.h". Veicot šīs darbības, varat uzturēt stabilu un konsekventu Visual Studio 2019 projektu veidošanas procesu pakalpojumā GitHub Actions.

Atjauniniet .yml skriptu, lai iekļautu MSVC141 rīkkopu

GitHub Actions YAML konfigurācija

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

Nodrošiniet pareizu MSVC rīku kopu GitHub darbībās

PowerShell skripts MSVC141 pārbaudei un instalēšanai

$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

Saderības ar MSVC rīku komplektiem nodrošināšana GitHub darbībās

Saderības uzturēšana ar dažādām rīku kopām nepārtrauktas integrācijas (CI) vidē, piemēram, GitHub Actions, ir ļoti svarīga, lai nodrošinātu konsekventu būvējumu un samazinātu kļūdas. Viens no galvenajiem aspektiem ir atjaunināt konfigurācijas failus ar nepieciešamajiem rīkiem un atkarībām. MSVC141 gadījumā ir svarīgi saprast, ka šī rīku kopa ir būtiska noteiktiem projektiem, īpaši tiem, kas paļaujas uz vecākām C++ bibliotēkām un komponentiem.

MSVC141 rīku kopas iekļaušana GitHub Actions iestatījumos ietver ne tikai pareizās Visual Studio versijas norādīšanu, bet arī visu atkarību atrisināšanas nodrošināšanu. Tas ietver pareizu NuGet avotu konfigurēšanu un tādu utilītu izmantošanu kā vswhere.exe lai pārbaudītu instalācijas. Automatizējot šīs darbības jūsu .yml un PowerShell skripti palīdz novērst izveides kļūmes un nodrošina jūsu CI/CD konveijera nevainojamu darbību, galu galā ietaupot izstrādes laiku un resursus.

Bieži uzdotie jautājumi un risinājumi MSVC rīku kopu integrēšanai

  1. Kā programmā GitHub Actions norādīt Visual Studio versiju?
  2. Izmantot vs-version: 2019 tavā .yml konfigurāciju, lai iestatītu vēlamo Visual Studio versiju.
  3. Kas ir vswhere.exe un kāpēc to lieto?
  4. vswhere.exe ir utilīta Visual Studio instalāciju atrašanai, nodrošinot nepieciešamo rīku komplektu pieejamību.
  5. Kā es varu automatizēt trūkstošo komponentu instalēšanu?
  6. Izmantot Start-Process programmā PowerShell, lai palaistu instalētāju ar nepieciešamajiem argumentiem bez uzraudzības instalācijām.
  7. Kāpēc ir svarīgi konfigurēt NuGet avotus?
  8. NuGet avotu konfigurēšana nodrošina visu projektu atkarību atrisināšanu, kas ir ļoti svarīgi veiksmīgai būvēšanai.
  9. Kā pārbaudīt MSVC141 rīku kopas klātbūtni?
  10. Izmantot vswhere.exe skriptā, lai pārbaudītu MSVC141 rīkkopas instalēšanas ceļu.
  11. Ko dara msbuild-version: 16.x precizēt?
  12. Tas norāda izmantojamo MSBuild versiju, nodrošinot saderību ar MSVC141 rīku kopu.
  13. Kā atjaunot NuGet pakotnes pakalpojumā GitHub Actions?
  14. Izmantojiet komandu nuget restore kam seko jūsu risinājuma fails, piemēram nuget restore POS.sln.
  15. Kāds ir mērķis Setup MSBuild darbība?
  16. Tā konfigurē vidi, lai izmantotu MSBuild, kas nepieciešama .NET projektu veidošanai programmā GitHub Actions.
  17. Kā es varu automātiski pārdēvēt būvēšanas artefaktus?
  18. Izmantojiet tādas PowerShell komandas kā Rename-Item lai pārdēvētu failus, pamatojoties uz būvējuma versiju.
  19. Kāpēc iekļaut distribution: 'temurin' Java iestatījumos?
  20. Tas norāda izmantojamo JDK izplatīšanu, nodrošinot, ka jūsu projektam ir instalēta pareizā Java versija.

Pēdējās domas par MSVC141 integrēšanu

Lai nodrošinātu Visual Studio 2019 projektu stabilitāti un funkcionalitāti, ir svarīgi nodrošināt, lai MSVC141 rīkkopa tiktu iekļauta jūsu GitHub Actions darbplūsmā. Atjauninot .yml skriptus un automatizējot instalēšanas procesu, varat novērst bieži sastopamas veidošanas kļūdas, kas saistītas ar trūkstošiem failiem. Šī proaktīvā pieeja ne tikai ietaupa laiku, bet arī uzlabo jūsu CI/CD konveijera efektivitāti, nodrošinot vienmērīgāku un uzticamāku projektu izveidi.