Opas päivittämään .yml-skriptit MSVC141:lle GitHubissa

Opas päivittämään .yml-skriptit MSVC141:lle GitHubissa
Opas päivittämään .yml-skriptit MSVC141:lle GitHubissa

MSVC141-ongelmien ratkaiseminen GitHub Actionsissa

Työskentelemme Visual Studio 2019 -projektin parissa, joka alkoi äskettäin heittää poikkeuksia puuttuviin tiedostoihin, erityisesti "atlbase.h". Tämä ongelma näyttää johtuvan MSVC141-työkalusarjan puuttumisesta, jota vaadittiin vasta muutama kuukausi sitten.

Tässä artikkelissa opastamme sinua päivittämään .yml-skriptit GitHub Actionsissa sisällyttämään MSVC141-työkalusarjan. Tämä varmistaa sujuvan projektin rakentamisen ja välttää "ei voi avata sisällyttää tiedostoa" -virheen, mikä auttaa sinua ylläpitämään kehitystyön tuottavuutta.

Komento Kuvaus
uses: microsoft/setup-msbuild@v1.1 Määrittää MSBuildin GitHub Actionsille, mikä mahdollistaa .NET-projektien rakentamisen.
vs-version: 2019 Määrittää käytettävän Visual Studion version, mikä varmistaa yhteensopivuuden MSVC141-työkalusarjan kanssa.
msbuild-version: 16.x Määrittää MSBuild-version, joka on linjassa kääntämistä varten vaaditun MSVC141-työkalusarjan kanssa.
extenda/actions/setup-nuget-sources@v0 Konfiguroi NuGet-lähteet GitHub Actionsissa, mikä on välttämätöntä projektiriippuvuuksien palauttamiseksi.
nuget restore POS.sln Palauttaa määritetyn ratkaisun NuGet-paketit ja ratkaisee kaikki riippuvuudet ennen rakentamista.
Copy-Item Kopioi tiedostoja paikasta toiseen PowerShellissä, jota käytetään tässä tietokantamallien käsittelyyn.
Start-Process Käynnistää uuden prosessin PowerShellissä, joka on hyödyllinen asennusohjelmien tai muiden suoritettavien tiedostojen suorittamiseen.
vswhere.exe Apuohjelma Visual Studio -asennusten paikallistamiseksi, jota käytetään MSVC141:n olemassaolon tarkistamiseen.

MSVC141-työkalusarjan integrointi GitHub-toimintoihin

Yllä toimitetut komentosarjat varmistavat, että MSVC141-työkalusarja sisältyy GitHub Actions -työnkulkuusi. Ensimmäinen komentosarja päivittää YAML-määritystiedoston sisältämään tarvittavien työkalujen ja ympäristöjen määrittämiseen tarvittavat vaiheet. Tämä sisältää MSBuildin asettamisen käyttämällä microsoft/setup-msbuild@v1.1, määrittämällä Visual Studio -version vs-version: 2019ja varmistaa, että msbuild-version: 16.x käytetään. Nämä vaiheet varmistavat, että rakennusympäristö on määritetty oikein käyttämään MSVC141:tä.

Lisäksi PowerShell-komentosarja tarkistaa MSVC141-työkalusarjan olemassaolon käyttämällä vswhere.exe. Jos sitä ei löydy, komentosarja käynnistää asennusprosessin suorittamalla Start-Process tarvittavilla argumenteilla puuttuvien komponenttien asentamiseksi. Tämä automaattinen lähestymistapa varmistaa, että tarvittava työkalusarja on saatavilla, mikä estää fatal error C1083 puuttuviin tiedostoihin, kuten 'atlbase.h'. Seuraamalla näitä vaiheita voit ylläpitää vakaata ja johdonmukaista rakennusprosessia Visual Studio 2019 -projekteillesi GitHub Actionsissa.

Päivitä .yml-skripti sisällyttääksesi MSVC141-työkalusarjan

GitHub Actions YAML-kokoonpano

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

Varmista, että GitHub-toiminnoissa on oikea MSVC-työkalusarja

PowerShell-skripti MSVC141:n tarkistamiseen ja asentamiseen

$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

Yhteensopivuuden varmistaminen MSVC-työkalusarjojen kanssa GitHub Actionsissa

Yhteensopivuuden ylläpitäminen eri työkalusarjojen kanssa jatkuvan integroinnin (CI) ympäristössä, kuten GitHub Actions, on ratkaisevan tärkeää johdonmukaisten koontiversioiden varmistamiseksi ja virheiden minimoimiseksi. Yksi keskeinen näkökohta on pitää määritystiedostosi ajan tasalla tarvittavilla työkaluilla ja riippuvuuksilla. MSVC141:n tapauksessa on tärkeää ymmärtää, että tämä työkalusarja on välttämätön tietyille projekteille, erityisesti niille, jotka perustuvat vanhempiin C++-kirjastoihin ja -komponentteihin.

MSVC141-työkalusarjan sisällyttäminen GitHub Actions -asetuksiin edellyttää oikean Visual Studio -version määrittämisen lisäksi myös kaikkien riippuvuuksien ratkaisemisen varmistamista. Tähän sisältyy NuGet-lähteiden määrittäminen oikein ja apuohjelmien, kuten esim vswhere.exe asennusten tarkistamiseen. Näiden vaiheiden automatisointi .yml ja PowerShell-komentosarjat auttavat estämään koontivirheitä ja pitävät CI/CD-putkilinjasi käynnissä sujuvasti, mikä säästää viime kädessä kehitysaikaa ja resursseja.

Yleisiä kysymyksiä ja ratkaisuja MSVC-työkalusarjojen integroimiseen

  1. Kuinka määritän Visual Studio -version GitHub Actionsissa?
  2. Käyttää vs-version: 2019 sinun .yml konfiguraatio määrittääksesi haluamasi Visual Studio -version.
  3. Mikä on vswhere.exe ja miksi sitä käytetään?
  4. vswhere.exe on apuohjelma Visual Studio -asennusten paikantamiseen ja varmistaa, että tarvittavat työkalusarjat ovat saatavilla.
  5. Kuinka voin automatisoida puuttuvien komponenttien asennuksen?
  6. Käyttää Start-Process PowerShellissä suorittaaksesi asennusohjelman tarvittavilla argumenteilla valvomattomia asennuksia varten.
  7. Miksi NuGet-lähteiden määrittäminen on tärkeää?
  8. NuGet-lähteiden määrittäminen varmistaa, että kaikki projektiriippuvuudet on ratkaistu, mikä on ratkaisevan tärkeää onnistuneiden koontiversioiden kannalta.
  9. Kuinka tarkistan MSVC141-työkalusarjan olemassaolon?
  10. Käyttää vswhere.exe komentosarjassa MSVC141-työkalusarjan asennuspolun tarkistamiseksi.
  11. Mikä tekee msbuild-version: 16.x täsmentää?
  12. Se määrittää käytettävän MSBuild-version, mikä varmistaa yhteensopivuuden MSVC141-työkalusarjan kanssa.
  13. Kuinka palautan NuGet-paketit GitHub Actionsissa?
  14. Käytä komentoa nuget restore jota seuraa ratkaisutiedostosi, kuten nuget restore POS.sln.
  15. Mikä on tarkoitus Setup MSBuild toiminta?
  16. Se määrittää ympäristön käyttämään MSBuildia, jota tarvitaan .NET-projektien rakentamiseen GitHub Actionsissa.
  17. Kuinka voin nimetä rakennusartefaktit uudelleen automaattisesti?
  18. Käytä PowerShell-komentoja, kuten Rename-Item tiedostojen uudelleennimeämiseksi koontiversion perusteella.
  19. Miksi sisällyttää distribution: 'temurin' Java-asetuksissa?
  20. Tämä määrittää käytettävän JDK-jakelun varmistaen, että projektillesi on asennettu oikea Java-versio.

Viimeisiä ajatuksia MSVC141:n integroimisesta

MSVC141-työkalusarjan sisällyttäminen GitHub Actions -työnkulkuun on välttämätöntä Visual Studio 2019 -projektien vakauden ja toimivuuden ylläpitämiseksi. Päivittämällä .yml-komentosarjat ja automatisoimalla asennusprosessin voit estää puuttuviin tiedostoihin liittyvät yleiset koontivirheet. Tämä ennakoiva lähestymistapa paitsi säästää aikaa, myös parantaa CI/CD-putkilinjasi tehokkuutta, mikä mahdollistaa sujuvamman ja luotettavamman projektin rakentamisen.