Leitfaden zum Aktualisieren von .yml-Skripts für MSVC141 in GitHub

Leitfaden zum Aktualisieren von .yml-Skripts für MSVC141 in GitHub
Leitfaden zum Aktualisieren von .yml-Skripts für MSVC141 in GitHub

Beheben von MSVC141-Problemen in GitHub-Aktionen

Wir arbeiten an einem Visual Studio 2019-Projekt, das vor Kurzem damit begonnen hat, Ausnahmen im Zusammenhang mit fehlenden Dateien, insbesondere „atlbase.h“, auszulösen. Dieses Problem scheint auf das Fehlen des MSVC141-Toolsets zurückzuführen zu sein, das bis vor einigen Monaten nicht erforderlich war.

In diesem Artikel zeigen wir Ihnen, wie Sie Ihre .yml-Skripte in GitHub Actions aktualisieren, um das MSVC141-Toolset einzuschließen. Dies gewährleistet eine reibungslose Projekterstellung und vermeidet den Fehler „Include-Datei kann nicht geöffnet werden“, was Ihnen hilft, die Produktivität in Ihrem Entwicklungsworkflow aufrechtzuerhalten.

Befehl Beschreibung
uses: microsoft/setup-msbuild@v1.1 Richtet MSBuild für GitHub-Aktionen ein und ermöglicht so die Erstellung von .NET-Projekten.
vs-version: 2019 Gibt die zu verwendende Version von Visual Studio an und stellt so die Kompatibilität mit dem MSVC141-Toolset sicher.
msbuild-version: 16.x Definiert die MSBuild-Version und richtet sich nach dem erforderlichen MSVC141-Toolset für die Kompilierung.
extenda/actions/setup-nuget-sources@v0 Konfiguriert NuGet-Quellen in GitHub-Aktionen, die für die Wiederherstellung von Projektabhängigkeiten unerlässlich sind.
nuget restore POS.sln Stellt NuGet-Pakete für die angegebene Lösung wieder her und löst alle Abhängigkeiten vor dem Build auf.
Copy-Item Kopiert Dateien von einem Speicherort an einen anderen in PowerShell und wird hier zur Verarbeitung von Datenbankvorlagen verwendet.
Start-Process Startet einen neuen Prozess in PowerShell, nützlich zum Ausführen von Installationsprogrammen oder anderen ausführbaren Dateien.
vswhere.exe Ein Dienstprogramm zum Auffinden von Visual Studio-Installationen, mit dem überprüft wird, ob MSVC141 vorhanden ist.

Integration des MSVC141-Toolsets in GitHub-Aktionen

Die oben bereitgestellten Skripte stellen sicher, dass das MSVC141-Toolset in Ihren GitHub Actions-Workflow einbezogen wird. Das erste Skript aktualisiert die YAML-Konfigurationsdatei und enthält die Schritte, die zum Einrichten der erforderlichen Tools und Umgebungen erforderlich sind. Dazu gehört auch die Einrichtung von MSBuild mit microsoft/setup-msbuild@v1.1, Angabe der Visual Studio-Version mit vs-version: 2019und sicherzustellen, dass die msbuild-version: 16.x wird eingesetzt. Mit diesen Schritten stellen Sie sicher, dass die Build-Umgebung korrekt für die Verwendung von MSVC141 konfiguriert ist.

Darüber hinaus prüft das PowerShell-Skript, ob das MSVC141-Toolset vorhanden ist vswhere.exe. Wenn es nicht gefunden wird, leitet das Skript den Installationsprozess ein, indem es ausgeführt wird Start-Process mit den notwendigen Argumenten, um die fehlenden Komponenten zu installieren. Dieser automatisierte Ansatz stellt sicher, dass das erforderliche Toolset verfügbar ist, und verhindert so das fatal error C1083 im Zusammenhang mit fehlenden Include-Dateien wie „atlbase.h“. Durch Befolgen dieser Schritte können Sie einen stabilen und konsistenten Buildprozess für Ihre Visual Studio 2019-Projekte in GitHub Actions aufrechterhalten.

Aktualisieren Sie das .yml-Skript, um das MSVC141-Toolset einzuschließen

GitHub Actions YAML-Konfiguration

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

Stellen Sie sicher, dass das MSVC-Toolset in den GitHub-Aktionen korrekt ist

PowerShell-Skript zum Überprüfen und Installieren von 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

Sicherstellen der Kompatibilität mit MSVC-Toolsets in GitHub-Aktionen

Die Aufrechterhaltung der Kompatibilität mit verschiedenen Toolsets in einer Continuous-Integration-Umgebung (CI) wie GitHub Actions ist entscheidend, um konsistente Builds sicherzustellen und Fehler zu minimieren. Ein wichtiger Aspekt besteht darin, Ihre Konfigurationsdateien mit den erforderlichen Tools und Abhängigkeiten auf dem neuesten Stand zu halten. Im Fall von MSVC141 ist es wichtig zu verstehen, dass dieses Toolset für bestimmte Projekte unerlässlich ist, insbesondere für solche, die auf älteren C++-Bibliotheken und -Komponenten basieren.

Um das MSVC141-Toolset in Ihr GitHub Actions-Setup aufzunehmen, müssen Sie nicht nur die richtige Visual Studio-Version angeben, sondern auch sicherstellen, dass alle Abhängigkeiten aufgelöst werden. Dazu gehört die korrekte Konfiguration von NuGet-Quellen und die Verwendung von Dienstprogrammen wie vswhere.exe um Installationen zu überprüfen. Automatisieren Sie diese Schritte in Ihrem .yml und PowerShell-Skripte tragen dazu bei, Buildfehler zu vermeiden und sorgen dafür, dass Ihre CI/CD-Pipeline reibungslos läuft, was letztendlich Entwicklungszeit und Ressourcen spart.

Häufige Fragen und Lösungen zur Integration von MSVC-Toolsets

  1. Wie lege ich die Visual Studio-Version in GitHub Actions fest?
  2. Verwenden vs-version: 2019 in deinem .yml Konfiguration, um die gewünschte Visual Studio-Version festzulegen.
  3. Was ist vswhere.exe und warum wird es verwendet?
  4. vswhere.exe ist ein Dienstprogramm zum Auffinden von Visual Studio-Installationen und stellt sicher, dass die erforderlichen Toolsets verfügbar sind.
  5. Wie kann ich die Installation fehlender Komponenten automatisieren?
  6. Verwenden Start-Process in PowerShell, um das Installationsprogramm mit den erforderlichen Argumenten für unbeaufsichtigte Installationen auszuführen.
  7. Warum ist es wichtig, NuGet-Quellen zu konfigurieren?
  8. Durch die Konfiguration von NuGet-Quellen wird sichergestellt, dass alle Projektabhängigkeiten aufgelöst werden, was für erfolgreiche Builds von entscheidender Bedeutung ist.
  9. Wie überprüfe ich, ob das MSVC141-Toolset vorhanden ist?
  10. Verwenden vswhere.exe in einem Skript, um den Installationspfad des MSVC141-Toolsets zu überprüfen.
  11. Was macht msbuild-version: 16.x angeben?
  12. Es gibt die zu verwendende MSBuild-Version an und gewährleistet so die Kompatibilität mit dem MSVC141-Toolset.
  13. Wie kann ich NuGet-Pakete in GitHub Actions wiederherstellen?
  14. Verwenden Sie den Befehl nuget restore gefolgt von Ihrer Lösungsdatei, z nuget restore POS.sln.
  15. Was ist der Zweck des Setup MSBuild Aktion?
  16. Es konfiguriert die Umgebung für die Verwendung von MSBuild, das zum Erstellen von .NET-Projekten in GitHub Actions erforderlich ist.
  17. Wie kann ich Build-Artefakte automatisch umbenennen?
  18. Verwenden Sie PowerShell-Befehle wie Rename-Item um Dateien basierend auf der Build-Version umzubenennen.
  19. Warum einschließen distribution: 'temurin' im Java-Setup?
  20. Dies gibt die zu verwendende JDK-Distribution an und stellt sicher, dass die richtige Java-Version für Ihr Projekt installiert ist.

Abschließende Gedanken zur Integration von MSVC141

Um die Stabilität und Funktionalität Ihrer Visual Studio 2019-Projekte aufrechtzuerhalten, ist es wichtig sicherzustellen, dass das MSVC141-Toolset in Ihrem GitHub Actions-Workflow enthalten ist. Indem Sie Ihre .yml-Skripte aktualisieren und den Installationsprozess automatisieren, können Sie häufige Build-Fehler im Zusammenhang mit fehlenden Dateien verhindern. Dieser proaktive Ansatz spart nicht nur Zeit, sondern steigert auch die Effizienz Ihrer CI/CD-Pipeline und ermöglicht eine reibungslosere und zuverlässigere Projekterstellung.