Przewodnik po aktualizacji skryptów .yml dla MSVC141 w GitHub

Przewodnik po aktualizacji skryptów .yml dla MSVC141 w GitHub
Przewodnik po aktualizacji skryptów .yml dla MSVC141 w GitHub

Rozwiązywanie problemów związanych z MSVC141 w akcjach GitHub

Pracujemy nad projektem Visual Studio 2019, który niedawno zaczął zgłaszać wyjątki związane z brakującymi plikami, w szczególności „atlbase.h”. Wydaje się, że problem ten wynika z braku zestawu narzędzi MSVC141, który nie był wymagany jeszcze kilka miesięcy temu.

W tym artykule poprowadzimy Cię, jak zaktualizować skrypty .yml w GitHub Actions, aby uwzględnić zestaw narzędzi MSVC141. Zapewnia to płynne budowanie projektów i pozwala uniknąć błędu „nie można otworzyć pliku dołączanego”, pomagając zachować produktywność w toku prac programistycznych.

Komenda Opis
uses: microsoft/setup-msbuild@v1.1 Konfiguruje program MSBuild dla akcji GitHub, umożliwiając tworzenie projektów .NET.
vs-version: 2019 Określa wersję programu Visual Studio do użycia, zapewniając zgodność z zestawem narzędzi MSVC141.
msbuild-version: 16.x Definiuje wersję programu MSBuild, dopasowując ją do zestawu narzędzi MSVC141 wymaganego do kompilacji.
extenda/actions/setup-nuget-sources@v0 Konfiguruje źródła NuGet w akcjach GitHub, niezbędne do przywracania zależności projektu.
nuget restore POS.sln Przywraca pakiety NuGet dla określonego rozwiązania, rozwiązując wszystkie zależności przed kompilacją.
Copy-Item Kopiuje pliki z jednej lokalizacji do drugiej w PowerShell, używane tutaj do obsługi szablonów baz danych.
Start-Process Uruchamia nowy proces w PowerShell, przydatny do uruchamiania instalatorów lub innych plików wykonywalnych.
vswhere.exe Narzędzie do lokalizowania instalacji programu Visual Studio, używane do sprawdzania obecności MSVC141.

Integracja zestawu narzędzi MSVC141 z akcjami GitHub

Skrypty dostarczone powyżej zapewniają uwzględnienie zestawu narzędzi MSVC141 w przepływie pracy GitHub Actions. Pierwszy skrypt aktualizuje plik konfiguracyjny YAML o kroki niezbędne do skonfigurowania wymaganych narzędzi i środowisk. Obejmuje to konfigurowanie programu MSBuild przy użyciu microsoft/setup-msbuild@v1.1, określając wersję programu Visual Studio za pomocą vs-version: 2019i zapewnienie, że msbuild-version: 16.x Jest używane. Te kroki zapewniają, że środowisko kompilacji jest poprawnie skonfigurowane do korzystania z MSVC141.

Dodatkowo skrypt PowerShell sprawdza obecność zestawu narzędzi MSVC141 za pomocą vswhere.exe. Jeśli nie zostanie znaleziony, skrypt inicjuje proces instalacji poprzez uruchomienie Start-Process z niezbędnymi argumentami, aby zainstalować brakujące komponenty. To zautomatyzowane podejście zapewnia dostępność wymaganego zestawu narzędzi, zapobiegając fatal error C1083 związane z brakującymi plikami dołączanymi, takimi jak „atlbase.h”. Wykonując te kroki, możesz zachować stabilny i spójny proces kompilacji projektów programu Visual Studio 2019 w akcjach GitHub.

Zaktualizuj skrypt .yml, aby uwzględnić zestaw narzędzi MSVC141

Konfiguracja YAML akcji GitHub

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

Upewnij się, że zestaw narzędzi MSVC jest prawidłowy w akcjach GitHub

Skrypt PowerShell do sprawdzania i instalowania 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

Zapewnienie zgodności z zestawami narzędzi MSVC w akcjach GitHub

Utrzymanie zgodności z różnymi zestawami narzędzi w środowisku ciągłej integracji (CI), takim jak GitHub Actions, ma kluczowe znaczenie dla zapewnienia spójnych kompilacji i minimalizacji błędów. Jednym z kluczowych aspektów jest aktualizowanie plików konfiguracyjnych za pomocą niezbędnych narzędzi i zależności. W przypadku MSVC141 ważne jest, aby zrozumieć, że ten zestaw narzędzi jest niezbędny w przypadku niektórych projektów, zwłaszcza tych opierających się na starszych bibliotekach i komponentach C++.

Dołączenie zestawu narzędzi MSVC141 do konfiguracji akcji GitHub wymaga nie tylko określenia poprawnej wersji programu Visual Studio, ale także upewnienia się, że wszystkie zależności zostały rozwiązane. Obejmuje to prawidłowe skonfigurowanie źródeł NuGet i korzystanie z narzędzi takich jak vswhere.exe do weryfikacji instalacji. Automatyzacja tych kroków w Twoim .yml a skrypty PowerShell pomagają zapobiegać błędom kompilacji i zapewniają płynne działanie potoku CI/CD, co ostatecznie oszczędza czas i zasoby programistyczne.

Często zadawane pytania i rozwiązania dotyczące integracji zestawów narzędzi MSVC

  1. Jak określić wersję programu Visual Studio w akcjach GitHub?
  2. Używać vs-version: 2019 w Twoim .yml konfiguracja, aby ustawić żądaną wersję programu Visual Studio.
  3. Co jest vswhere.exe i dlaczego się go używa?
  4. vswhere.exe to narzędzie do lokalizowania instalacji programu Visual Studio, zapewniające dostępność wymaganych zestawów narzędzi.
  5. Jak zautomatyzować instalację brakujących komponentów?
  6. Używać Start-Process w PowerShell, aby uruchomić instalator z niezbędnymi argumentami dla instalacji nienadzorowanych.
  7. Dlaczego ważne jest skonfigurowanie źródeł NuGet?
  8. Skonfigurowanie źródeł NuGet zapewnia rozwiązanie wszystkich zależności projektu, co ma kluczowe znaczenie dla pomyślnych kompilacji.
  9. Jak sprawdzić obecność zestawu narzędzi MSVC141?
  10. Używać vswhere.exe w skrypcie, aby zweryfikować ścieżkę instalacji zestawu narzędzi MSVC141.
  11. Co robi msbuild-version: 16.x sprecyzować?
  12. Określa wersję MSBuild, która ma być używana, zapewniając zgodność z zestawem narzędzi MSVC141.
  13. Jak przywrócić pakiety NuGet w akcjach GitHub?
  14. Użyj polecenia nuget restore po którym następuje plik rozwiązania, np nuget restore POS.sln.
  15. Jaki jest cel Setup MSBuild działanie?
  16. Konfiguruje środowisko do korzystania z MSBuild, niezbędnego do budowania projektów .NET w GitHub Actions.
  17. Jak mogę automatycznie zmienić nazwę artefaktów kompilacji?
  18. Użyj poleceń PowerShell, takich jak Rename-Item aby zmienić nazwy plików w zależności od wersji kompilacji.
  19. Po co uwzględniać distribution: 'temurin' w konfiguracji Java?
  20. Określa dystrybucję JDK, która ma być używana, zapewniając zainstalowanie prawidłowej wersji Java dla Twojego projektu.

Końcowe przemyślenia na temat integracji MSVC141

Zapewnienie uwzględnienia zestawu narzędzi MSVC141 w przepływie pracy GitHub Actions jest niezbędne do utrzymania stabilności i funkcjonalności projektów programu Visual Studio 2019. Aktualizując skrypty .yml i automatyzując proces instalacji, możesz zapobiec typowym błędom kompilacji związanym z brakującymi plikami. To proaktywne podejście nie tylko oszczędza czas, ale także zwiększa wydajność potoku CI/CD, umożliwiając płynniejsze i bardziej niezawodne budowanie projektów.