MSVC141 skirtų .yml scenarijų atnaujinimo „GitHub“ vadovas

MSVC141 skirtų .yml scenarijų atnaujinimo „GitHub“ vadovas
MSVC141 skirtų .yml scenarijų atnaujinimo „GitHub“ vadovas

MSVC141 problemų sprendimas naudojant „GitHub“ veiksmus

Mes dirbame su Visual Studio 2019 projektu, kuris neseniai pradėjo taikyti išimtis, susijusias su trūkstamais failais, konkrečiai „atlbase.h“. Atrodo, kad ši problema kilo dėl to, kad nebuvo MSVC141 įrankių rinkinio, kurio reikėjo tik prieš kelis mėnesius.

Šiame straipsnyje paaiškinsime, kaip atnaujinti .yml scenarijus sistemoje „GitHub Actions“, kad būtų įtrauktas MSVC141 įrankių rinkinys. Taip užtikrinamas sklandus projekto kūrimas ir išvengiama klaidos „negalima atidaryti įtraukiant failo“, taip padedant išlaikyti kūrimo darbo eigos produktyvumą.

komandą apibūdinimas
uses: microsoft/setup-msbuild@v1.1 Nustato MSBuild for GitHub Actions, leidžiantį kurti .NET projektus.
vs-version: 2019 Nurodoma naudotinos „Visual Studio“ versija, užtikrinanti suderinamumą su MSVC141 įrankių rinkiniu.
msbuild-version: 16.x Apibrėžia MSBuild versiją, suderintą su kompiliavimui reikalingu MSVC141 įrankių rinkiniu.
extenda/actions/setup-nuget-sources@v0 Sukonfigūruoja „NuGet“ šaltinius „GitHub Actions“, kurie yra būtini norint atkurti projekto priklausomybes.
nuget restore POS.sln Atkuria nurodyto sprendimo NuGet paketus, pašalina visas priklausomybes prieš kuriant.
Copy-Item Kopijuoja failus iš vienos vietos į kitą „PowerShell“, čia naudojami duomenų bazės šablonams tvarkyti.
Start-Process Pradeda naują procesą „PowerShell“, kuris naudingas paleidžiant diegimo programas ar kitus vykdomuosius failus.
vswhere.exe Priemonė, skirta „Visual Studio“ diegimams rasti, naudojama patikrinti, ar nėra MSVC141.

MSVC141 įrankių rinkinio integravimas į „GitHub“ veiksmus

Aukščiau pateikti scenarijai užtikrina, kad MSVC141 įrankių rinkinys būtų įtrauktas į jūsų „GitHub Actions“ darbo eigą. Pirmasis scenarijus atnaujina YAML konfigūracijos failą, įtraukdamas veiksmus, reikalingus norint nustatyti reikiamus įrankius ir aplinkas. Tai apima MSBuild nustatymą naudojant microsoft/setup-msbuild@v1.1, nurodant Visual Studio versiją su vs-version: 2019, ir užtikrinti, kad msbuild-version: 16.x yra naudojamas. Šie veiksmai užtikrina, kad kūrimo aplinka tinkamai sukonfigūruota naudoti MSVC141.

Be to, „PowerShell“ scenarijus tikrina, ar nėra MSVC141 įrankių rinkinio vswhere.exe. Jei jis nerastas, scenarijus pradeda diegimo procesą paleisdamas Start-Process su reikiamais argumentais trūkstamiems komponentams įdiegti. Šis automatizuotas metodas užtikrina, kad reikiamas įrankių rinkinys būtų prieinamas, užkertant kelią fatal error C1083 susiję su trūkstamais įtraukti failai, tokie kaip „atlbase.h“. Atlikdami šiuos veiksmus, galite palaikyti stabilų ir nuoseklų „Visual Studio 2019“ projektų kūrimo procesą naudodami „GitHub Actions“.

Atnaujinkite .yml scenarijų, kad įtrauktumėte MSVC141 įrankių rinkinį

„GitHub Actions“ YAML konfigūracija

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

Užtikrinkite tinkamą MSVC įrankių rinkinį „GitHub“ veiksmuose

„PowerShell“ scenarijus, skirtas MSVC141 tikrinimui ir diegimui

$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

Suderinamumo su MSVC įrankių rinkiniais užtikrinimas naudojant „GitHub“ veiksmus

Suderinamumo su įvairiais įrankių rinkiniais palaikymas nuolatinės integracijos (CI) aplinkoje, pvz., „GitHub Actions“, yra labai svarbus norint užtikrinti nuoseklų kūrimą ir sumažinti klaidų skaičių. Vienas iš pagrindinių aspektų yra nuolat atnaujinti konfigūracijos failus, naudojant reikiamus įrankius ir priklausomybes. MSVC141 atveju svarbu suprasti, kad šis įrankių rinkinys yra būtinas tam tikriems projektams, ypač tiems, kurie remiasi senesnėmis C++ bibliotekomis ir komponentais.

Įtraukus MSVC141 įrankių rinkinį į „GitHub Actions“ sąranką, reikia ne tik nurodyti teisingą „Visual Studio“ versiją, bet ir užtikrinti, kad visos priklausomybės būtų pašalintos. Tai apima teisingą NuGet šaltinių konfigūravimą ir tokių paslaugų naudojimą kaip vswhere.exe instaliacijai patikrinti. Šių veiksmų automatizavimas jūsų .yml ir „PowerShell“ scenarijai padeda išvengti kūrimo gedimų ir užtikrina sklandų CI / CD konvejerio veikimą, galiausiai taupydami kūrimo laiką ir išteklius.

Įprasti MSVC įrankių rinkinių integravimo klausimai ir sprendimai

  1. Kaip nurodyti „Visual Studio“ versiją „GitHub Actions“?
  2. Naudokite vs-version: 2019 tavo .yml konfigūraciją, kad nustatytumėte norimą Visual Studio versiją.
  3. Kas yra vswhere.exe ir kodėl jis naudojamas?
  4. vswhere.exe yra „Visual Studio“ diegimo vietos nustatymo įrankis, užtikrinantis reikiamų įrankių rinkinių prieinamumą.
  5. Kaip automatizuoti trūkstamų komponentų diegimą?
  6. Naudokite Start-Process „PowerShell“, kad paleistumėte diegimo programą su reikiamais argumentais neprižiūrimiems diegimams.
  7. Kodėl svarbu konfigūruoti „NuGet“ šaltinius?
  8. „NuGet“ šaltinių konfigūravimas užtikrina, kad visos projekto priklausomybės yra išspręstos, o tai labai svarbu sėkmingam kūrimui.
  9. Kaip patikrinti, ar nėra MSVC141 įrankių rinkinio?
  10. Naudokite vswhere.exe scenarijuje, kad patikrintų MSVC141 įrankių rinkinio diegimo kelią.
  11. Kas daro msbuild-version: 16.x nurodyti?
  12. Jame nurodoma naudotina MSBuild versija, užtikrinanti suderinamumą su MSVC141 įrankių rinkiniu.
  13. Kaip atkurti „NuGet“ paketus „GitHub Actions“?
  14. Naudokite komandą nuget restore po to jūsų sprendimo failas, pvz nuget restore POS.sln.
  15. Koks yra tikslas Setup MSBuild veiksmas?
  16. Jis sukonfigūruoja aplinką naudoti MSBuild, reikalingą kuriant .NET projektus naudojant GitHub Actions.
  17. Kaip galiu automatiškai pervardyti kūrimo artefaktus?
  18. Naudokite „PowerShell“ komandas, pvz Rename-Item pervardyti failus pagal kūrimo versiją.
  19. Kodėl įtraukti distribution: 'temurin' „Java“ sąrankoje?
  20. Tai nurodo naudotiną JDK paskirstymą, užtikrinant, kad jūsų projektui būtų įdiegta tinkama Java versija.

Paskutinės mintys apie MSVC141 integravimą

Norint išlaikyti „Visual Studio 2019“ projektų stabilumą ir funkcionalumą, būtina užtikrinti, kad MSVC141 įrankių rinkinys būtų įtrauktas į „GitHub Actions“ darbo eigą. Atnaujinę .yml scenarijus ir automatizuodami diegimo procesą galite išvengti įprastų kūrimo klaidų, susijusių su trūkstamais failais. Šis iniciatyvus metodas ne tik sutaupo laiko, bet ir padidina jūsų CI / CD dujotiekio efektyvumą, leidžiantį sklandžiau ir patikimiau kurti projektus.