Útmutató az MSVC141 .yml-szkripteinek frissítéséhez a GitHubban

Útmutató az MSVC141 .yml-szkripteinek frissítéséhez a GitHubban
Útmutató az MSVC141 .yml-szkripteinek frissítéséhez a GitHubban

MSVC141-problémák megoldása a GitHub-műveletekben

Egy Visual Studio 2019 projekten dolgozunk, amely a közelmúltban kezdett kivételeket dobni a hiányzó fájlokhoz, különösen az „atlbase.h”-hoz. Úgy tűnik, hogy ez a probléma az MSVC141 eszközkészlet hiányának köszönhető, amelyre néhány hónappal ezelőttig nem volt szükség.

Ebben a cikkben bemutatjuk, hogyan frissítheti az .yml-szkripteket a GitHub Actions alkalmazásban, hogy az tartalmazza az MSVC141 eszközkészletet. Ez biztosítja a zökkenőmentes projektfelépítést, és elkerüli a „nem nyitható meg, beleértve a fájlt” hibát, segít fenntartani a termelékenységet a fejlesztési munkafolyamat során.

Parancs Leírás
uses: microsoft/setup-msbuild@v1.1 Beállítja az MSBuild for GitHub Actions szolgáltatást, amely lehetővé teszi .NET-projektek létrehozását.
vs-version: 2019 Meghatározza a Visual Studio használandó verzióját, amely biztosítja az MSVC141 eszközkészlettel való kompatibilitást.
msbuild-version: 16.x Meghatározza az MSBuild verziót, igazodva a fordításhoz szükséges MSVC141 eszközkészlethez.
extenda/actions/setup-nuget-sources@v0 Konfigurálja a NuGet-forrásokat a GitHub Actions-ben, ami elengedhetetlen a projektfüggőségek helyreállításához.
nuget restore POS.sln Visszaállítja a NuGet-csomagokat a megadott megoldáshoz, feloldva az összes függőséget a felépítés előtt.
Copy-Item Fájlokat másol egyik helyről a másikra a PowerShellben, és itt adatbázissablonok kezelésére használják.
Start-Process Új folyamatot indít el a PowerShellben, amely hasznos a telepítők vagy más végrehajtható fájlok futtatásához.
vswhere.exe A Visual Studio telepítéseinek megkeresésére szolgáló segédprogram, amely az MSVC141 jelenlétének ellenőrzésére szolgál.

Az MSVC141 eszközkészlet integrálása a GitHub Actions-be

A fent megadott szkriptek biztosítják, hogy az MSVC141 eszközkészlet szerepeljen a GitHub Actions munkafolyamatában. Az első szkript frissíti a YAML konfigurációs fájlt, hogy tartalmazza a szükséges eszközök és környezetek beállításához szükséges lépéseket. Ez magában foglalja az MSBuild beállítását microsoft/setup-msbuild@v1.1, amely a Visual Studio verzióját adja meg vs-version: 2019, és annak biztosítása, hogy a msbuild-version: 16.x használt. Ezek a lépések biztosítják, hogy az összeállítási környezet megfelelően be van állítva az MSVC141 használatára.

Ezenkívül a PowerShell-parancsfájl ellenőrzi az MSVC141 eszközkészlet jelenlétét a használatával vswhere.exe. Ha nem található, a parancsfájl futtatásával elindítja a telepítési folyamatot Start-Process a hiányzó komponensek telepítéséhez szükséges érvekkel. Ez az automatizált megközelítés biztosítja, hogy a szükséges eszközkészlet rendelkezésre álljon, megelőzve a fatal error C1083 a hiányzó fájlokkal kapcsolatos, például az „atlbase.h”. Ha követi ezeket a lépéseket, stabil és következetes összeállítási folyamatot tarthat fenn Visual Studio 2019-projektjeihez a GitHub Actions szolgáltatásban.

Frissítse az .yml szkriptet, hogy tartalmazza az MSVC141 eszközkészletet

GitHub Actions YAML konfiguráció

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

Gondoskodjon a megfelelő MSVC-eszközkészletről a GitHub-műveletekben

PowerShell-szkript az MSVC141 ellenőrzéséhez és telepítéséhez

$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

Az MSVC-eszközkészletekkel való kompatibilitás biztosítása a GitHub-műveletekben

A különféle eszközkészletekkel való kompatibilitás fenntartása folyamatos integrációs (CI) környezetben, mint például a GitHub Actions, elengedhetetlen a következetes összeállítások biztosításához és a hibák minimalizálásához. Az egyik legfontosabb szempont a konfigurációs fájlok naprakészen tartása a szükséges eszközökkel és függőségekkel. Az MSVC141 esetében fontos megérteni, hogy ez az eszközkészlet elengedhetetlen bizonyos projektekhez, különösen azokhoz, amelyek régebbi C++ könyvtárakra és összetevőkre támaszkodnak.

Az MSVC141 eszközkészletnek a GitHub Actions beállításaiba való bevonása nemcsak a Visual Studio helyes verziójának megadását jelenti, hanem az összes függőség feloldását is. Ez magában foglalja a NuGet-források helyes konfigurálását és az olyan segédprogramok használatát, mint például vswhere.exe a telepítések ellenőrzéséhez. Automatizálja ezeket a lépéseket a .yml és a PowerShell-szkriptek segítenek megelőzni az összeállítási hibákat, és zökkenőmentesen futnak a CI/CD-folyamatban, ami végső soron fejlesztési időt és erőforrásokat takarít meg.

Gyakori kérdések és megoldások az MSVC eszközkészletek integrálásával kapcsolatban

  1. Hogyan adhatom meg a Visual Studio verzióját a GitHub Actions alkalmazásban?
  2. Használat vs-version: 2019 a tiédben .yml konfigurációt a kívánt Visual Studio verzió beállításához.
  3. Mi a vswhere.exe és miért használják?
  4. vswhere.exe egy segédprogram a Visual Studio telepítéseinek megkeresésére, biztosítva a szükséges eszközkészletek rendelkezésre állását.
  5. Hogyan automatizálhatom a hiányzó alkatrészek telepítését?
  6. Használat Start-Process a PowerShellben a telepítő futtatásához a felügyelet nélküli telepítéshez szükséges argumentumokkal.
  7. Miért fontos a NuGet-források konfigurálása?
  8. A NuGet-források konfigurálása biztosítja, hogy minden projektfüggőség feloldásra kerüljön, ami elengedhetetlen a sikeres buildekhez.
  9. Hogyan ellenőrizhetem az MSVC141 eszközkészlet jelenlétét?
  10. Használat vswhere.exe egy parancsfájlban az MSVC141 eszközkészlet telepítési útvonalának ellenőrzéséhez.
  11. Mit csinál msbuild-version: 16.x megadni?
  12. Meghatározza a használandó MSBuild verziót, biztosítva a kompatibilitást az MSVC141 eszközkészlettel.
  13. Hogyan állíthatom vissza a NuGet-csomagokat a GitHub Actions-ben?
  14. Használja a parancsot nuget restore ezt követi a megoldásfájl, például nuget restore POS.sln.
  15. Mi a célja a Setup MSBuild akció?
  16. Beállítja a környezetet az MSBuild használatára, amely szükséges a .NET-projektek felépítéséhez a GitHub Actions programban.
  17. Hogyan nevezhetem át automatikusan az építési melléktermékeket?
  18. Használjon PowerShell-parancsokat, mint pl Rename-Item a fájlok átnevezéséhez a build verziója alapján.
  19. Miért tartalmazza distribution: 'temurin' a Java beállításban?
  20. Ez határozza meg a használandó JDK-disztribúciót, biztosítva, hogy a megfelelő Java-verzió legyen telepítve a projekthez.

Utolsó gondolatok az MSVC141 integrálásával kapcsolatban

Annak biztosítása, hogy az MSVC141 eszközkészlet szerepeljen a GitHub Actions munkafolyamatában, elengedhetetlen a Visual Studio 2019 projektek stabilitásának és funkcionalitásának fenntartásához. Az .yml szkriptek frissítésével és a telepítési folyamat automatizálásával megelőzheti a hiányzó fájlokkal kapcsolatos gyakori összeállítási hibákat. Ez a proaktív megközelítés nemcsak időt takarít meg, hanem növeli a CI/CD-folyamat hatékonyságát is, ami gördülékenyebb és megbízhatóbb projektépítést tesz lehetővé.