Riešenie problémov MSVC141 v akciách GitHub
Pracujeme na projekte Visual Studio 2019, ktorý nedávno začal vyvolávať výnimky súvisiace s chýbajúcimi súbormi, konkrétne 'atlbase.h'. Zdá sa, že tento problém je spôsobený absenciou sady nástrojov MSVC141, ktorá sa ešte pred niekoľkými mesiacmi nevyžadovala.
V tomto článku vás prevedieme, ako aktualizovať skripty .yml v akciách GitHub tak, aby obsahovali sadu nástrojov MSVC141. To zaisťuje plynulé zostavovanie projektu a predchádza chybe „nemožno otvoriť zahrnutý súbor“, čo vám pomáha udržiavať produktivitu vo vašom pracovnom postupe vývoja.
| Príkaz | Popis |
|---|---|
| uses: microsoft/setup-msbuild@v1.1 | Nastaví MSBuild pre akcie GitHub, čo umožňuje vytváranie projektov .NET. |
| vs-version: 2019 | Určuje verziu Visual Studio, ktorá sa má použiť, čím sa zabezpečí kompatibilita so sadou nástrojov MSVC141. |
| msbuild-version: 16.x | Definuje verziu MSBuild v súlade s požadovanou sadou nástrojov MSVC141 na kompiláciu. |
| extenda/actions/setup-nuget-sources@v0 | Konfiguruje zdroje NuGet v akciách GitHub, ktoré sú nevyhnutné na obnovenie závislostí projektu. |
| nuget restore POS.sln | Obnoví balíčky NuGet pre zadané riešenie a vyrieši všetky závislosti pred zostavením. |
| Copy-Item | Skopíruje súbory z jedného miesta na druhé v PowerShell, ktoré sa tu používa na prácu so šablónami databázy. |
| Start-Process | Spustí nový proces v prostredí PowerShell, ktorý je užitočný pri spúšťaní inštalačných programov alebo iných spustiteľných súborov. |
| vswhere.exe | Pomôcka na vyhľadanie inštalácií Visual Studio, ktorá sa používa na kontrolu prítomnosti MSVC141. |
Integrácia sady nástrojov MSVC141 do akcií GitHub
Skripty uvedené vyššie zabezpečujú, že súprava nástrojov MSVC141 je zahrnutá do vášho pracovného postupu akcií GitHub. Prvý skript aktualizuje konfiguračný súbor YAML tak, aby obsahoval kroky potrebné na nastavenie požadovaných nástrojov a prostredí. To zahŕňa nastavenie pomocou MSBuild microsoft/setup-msbuild@v1.1, s uvedením verzie Visual Studio s vs-version: 2019a zabezpečiť, aby msbuild-version: 16.x sa používa. Tieto kroky zabezpečia, že prostredie zostavy je správne nakonfigurované na používanie MSVC141.
Skript PowerShell navyše kontroluje prítomnosť používanej sady nástrojov MSVC141 vswhere.exe. Ak sa nenájde, skript spustí proces inštalácie spustením Start-Process s potrebnými argumentmi na inštaláciu chýbajúcich komponentov. Tento automatizovaný prístup zabezpečuje, že je k dispozícii požadovaná sada nástrojov, čím sa predchádza fatal error C1083 súvisiace s chýbajúcimi zahrnutými súbormi ako 'atlbase.h'. Podľa týchto krokov môžete udržiavať stabilný a konzistentný proces zostavovania pre svoje projekty Visual Studio 2019 v akciách GitHub.
Aktualizujte skript .yml tak, aby obsahoval sadu nástrojov MSVC141
Akcie GitHub Konfigurácia YAML
name: Pull request - Windowson:pull_request:paths-ignore:- 'Engine/Engine.Android/'- 'Mobile/'jobs:build:runs-on: windows-2022defaults:run:shell: pwshenv:DEFAULT_VERSION: v17.4.500SolutionDir: ${{ github.workspace }}steps:- name: Checkoutuses: actions/checkout@v3with:token: ${{ secrets.RS_GITHUB_TOKEN }}submodules: true- uses: actions/setup-java@v4with:distribution: 'temurin'java-version: '11'- name: Setup MSBuilduses: microsoft/setup-msbuild@v1.1- name: Install Visual Studiouses: microsoft/setup-msbuild@v1.1with:vs-version: 2019msbuild-version: 16.x- name: Setup NuGet sourcesuses: extenda/actions/setup-nuget-sources@v0with:config-file: NuGet.Configsources: |[{"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 packagesrun: nuget restore POS.sln- name: Determine versionid: verrun: .\Build\determine-version.ps1- name: Update assembliesrun: .\Build\update-assemblies.ps1 ${{ steps.ver.outputs.version }} ${{ steps.ver.outputs.full-version }}- name: Generate database templaterun: |.\Common\Database\AppVeyor\gen-databases.ps1 Common\Database abcDbCopy-Item abcDb\Template.db -Destination Common\Database- name: Build solutionrun: msbuild POS.sln @Build\WindowsBuildParams.rsp- name: Build installation packagesrun: |.\Build\exit-on-failure.ps1msbuild Installation\Installation.sln @Build\WindowsBuildParams.rsp -p:BuildNumber=${{ steps.ver.outputs.full-version }}ExitOnFailureGet-ChildItem Installation\Bin\ReleaseRename-Item -Path Installation\Bin\Release\abc.msi -NewName abc-v${{ steps.ver.outputs.full-version }}.msiRename-Item -Path Installation\Bin\Release\abc.exe -NewName abc-v${{ steps.ver.outputs.full-version }}.exeRename-Item -Path Installation\Bin\Release\VRRSSurfaceComponentsEditor.msi -NewName SurfaceComponentsEditor-v${{ steps.ver.outputs.full-version }}.msi- name: Generate customization packagerun: .\Common\Database\AppVeyor\gen-customization-zip.ps1 Common\Database ${{ steps.ver.outputs.full-version }}- name: Save abc Installeruses: actions/upload-artifact@v3with:name: abcInstaller-v${{ steps.ver.outputs.full-version }}path: Installation\Bin\Release\abc-*.msi- name: Save abc Setupuses: actions/upload-artifact@v3with:name: abcSetup-v${{ steps.ver.outputs.full-version }}path: Installation\Bin\Release\abc-*.exe- name: Save Databaseuses: actions/upload-artifact@v3with:name: Database-v${{ steps.ver.outputs.full-version }}path: Common\Database\CustomizationTemplate\*
Zabezpečte správnu sadu nástrojov MSVC v akciách GitHub
Skript PowerShell na kontrolu a inštaláciu 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 installationPathif (-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" -Waitif ($?) {Write-Output "MSVC141 installation completed."}else {Write-Error "Failed to install MSVC141."exit 1}} else {Write-Output "MSVC141 already installed at $vsInstallPath"}exit 0
Zabezpečenie kompatibility so sadami nástrojov MSVC v akciách GitHub
Udržiavanie kompatibility s rôznymi sadami nástrojov v prostredí nepretržitej integrácie (CI), ako je GitHub Actions, je kľúčové pre zabezpečenie konzistentných zostavení a minimalizáciu chýb. Jedným z kľúčových aspektov je udržiavať vaše konfiguračné súbory aktuálne s potrebnými nástrojmi a závislosťami. V prípade MSVC141 je dôležité pochopiť, že táto sada nástrojov je nevyhnutná pre určité projekty, najmä tie, ktoré sa spoliehajú na staršie knižnice a komponenty C++.
Zahrnutie sady nástrojov MSVC141 do nastavenia akcií GitHub zahŕňa nielen zadanie správnej verzie Visual Studio, ale aj zabezpečenie vyriešenia všetkých závislostí. To zahŕňa správnu konfiguráciu zdrojov NuGet a používanie nástrojov ako vswhere.exe na overenie inštalácií. Automatizácia týchto krokov v rámci vášho .yml a skripty PowerShell pomáhajú predchádzať zlyhaniam pri zostavovaní a udržiavajú hladký chod vášho CI/CD kanála, čo v konečnom dôsledku šetrí čas a zdroje na vývoj.
Bežné otázky a riešenia pre integráciu sád nástrojov MSVC
- Ako určím verziu Visual Studio v akciách GitHub?
- Použite vs-version: 2019 v tvojom .yml konfiguráciu na nastavenie požadovanej verzie Visual Studio.
- Čo je vswhere.exe a prečo sa používa?
- vswhere.exe je pomôcka na lokalizáciu inštalácií Visual Studio, ktorá zabezpečuje, že sú k dispozícii požadované sady nástrojov.
- Ako môžem automatizovať inštaláciu chýbajúcich komponentov?
- Použite Start-Process v PowerShell na spustenie inštalačného programu s potrebnými argumentmi pre bezobslužné inštalácie.
- Prečo je dôležité nakonfigurovať zdroje NuGet?
- Konfigurácia zdrojov NuGet zaisťuje vyriešenie všetkých závislostí projektu, čo je kľúčové pre úspešné zostavenia.
- Ako skontrolujem prítomnosť sady nástrojov MSVC141?
- Použite vswhere.exe v skripte na overenie inštalačnej cesty sady nástrojov MSVC141.
- Čo robí msbuild-version: 16.x špecifikovať?
- Špecifikuje verziu MSBuild, ktorá sa má použiť, čím sa zabezpečí kompatibilita so sadou nástrojov MSVC141.
- Ako obnovím balíčky NuGet v akciách GitHub?
- Použite príkaz nuget restore nasledovaný súborom vášho riešenia, napr nuget restore POS.sln.
- Aký je účel Setup MSBuild akcia?
- Konfiguruje prostredie na používanie MSBuild, ktorý je potrebný na vytváranie projektov .NET v akciách GitHub.
- Ako môžem automaticky premenovať artefakty zostavy?
- Použite príkazy PowerShell, ako napr Rename-Item premenovať súbory na základe verzie zostavy.
- Prečo zahrnúť distribution: 'temurin' v nastaveniach Java?
- Toto špecifikuje distribúciu JDK, ktorá sa má použiť, čím sa zabezpečí, že pre váš projekt je nainštalovaná správna verzia Java.
Záverečné myšlienky o integrácii MSVC141
Zabezpečenie zahrnutia sady nástrojov MSVC141 do vášho pracovného postupu akcií GitHub je nevyhnutné na udržanie stability a funkčnosti vašich projektov Visual Studio 2019. Aktualizáciou skriptov .yml a automatizáciou procesu inštalácie môžete zabrániť bežným chybám pri zostavovaní súvisiacich s chýbajúcimi súbormi. Tento proaktívny prístup nielen šetrí čas, ale tiež zvyšuje efektivitu vášho CI/CD potrubia, čo umožňuje plynulejšie a spoľahlivejšie zostavovanie projektov.