Rješavanje problema s MSVC141 u GitHub radnjama
Radimo na projektu Visual Studio 2019 koji je nedavno počeo izbacivati iznimke povezane s datotekama koje nedostaju, posebno 'atlbase.h'. Čini se da je ovaj problem nastao zbog nepostojanja skupa alata MSVC141, koji nije bio potreban do prije nekoliko mjeseci.
U ovom ćemo vas članku uputiti kako ažurirati svoje .yml skripte u GitHub Actions da biste uključili skup alata MSVC141. Ovo osigurava glatku izradu projekta i izbjegava pogrešku 'ne može otvoriti uključenu datoteku', pomažući vam u održavanju produktivnosti u vašem tijeku razvoja.
| Naredba | Opis |
|---|---|
| uses: microsoft/setup-msbuild@v1.1 | Postavlja MSBuild za GitHub radnje, omogućujući izgradnju .NET projekata. |
| vs-version: 2019 | Određuje verziju Visual Studio koja će se koristiti, osiguravajući kompatibilnost sa skupom alata MSVC141. |
| msbuild-version: 16.x | Definira verziju MSBuild-a, usklađujući se s potrebnim skupom alata MSVC141 za kompilaciju. |
| extenda/actions/setup-nuget-sources@v0 | Konfigurira NuGet izvore u GitHub radnjama, neophodne za vraćanje ovisnosti projekta. |
| nuget restore POS.sln | Vraća NuGet pakete za navedeno rješenje, rješavajući sve ovisnosti prije izgradnje. |
| Copy-Item | Kopira datoteke s jedne lokacije na drugu u PowerShell, ovdje se koristi za rukovanje predlošcima baze podataka. |
| Start-Process | Pokreće novi proces u PowerShell, koristan za pokretanje programa za instalaciju ili drugih izvršnih datoteka. |
| vswhere.exe | Uslužni program za lociranje instalacija Visual Studio, koji se koristi za provjeru prisutnosti MSVC141. |
Integracija MSVC141 skupa alata u GitHub akcije
Gore navedene skripte osiguravaju da je skup alata MSVC141 uključen u vaš tijek rada GitHub Actions. Prva skripta ažurira YAML konfiguracijsku datoteku kako bi uključila korake potrebne za postavljanje potrebnih alata i okruženja. To uključuje postavljanje MSBuild-a pomoću microsoft/setup-msbuild@v1.1, navodeći verziju Visual Studio s vs-version: 2019, i osiguravanje da msbuild-version: 16.x koristi se. Ovi koraci osiguravaju da je okruženje za izgradnju ispravno konfigurirano za korištenje MSVC141.
Dodatno, skripta PowerShell provjerava prisutnost skupa alata MSVC141 pomoću vswhere.exe. Ako nije pronađena, skripta pokreće proces instalacije pokretanjem Start-Process s potrebnim argumentima za ugradnju komponenti koje nedostaju. Ovaj automatizirani pristup osigurava da je potreban skup alata dostupan, sprječavajući fatal error C1083 povezane s nedostajućim datotekama poput 'atlbase.h'. Slijedeći ove korake, možete održavati stabilan i dosljedan proces izgradnje za svoje projekte Visual Studio 2019 u GitHub Actions.
Ažurirajte .yml skriptu da uključi MSVC141 skup alata
GitHub radnje YAML konfiguracija
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\*
Osigurajte ispravan MSVC skup alata u GitHub radnjama
PowerShell skripta za provjeru i instalaciju 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
Osiguravanje kompatibilnosti s MSVC skupovima alata u GitHub radnjama
Održavanje kompatibilnosti s različitim setovima alata u okruženju kontinuirane integracije (CI) kao što je GitHub Actions presudno je za osiguravanje dosljednih izrada i minimiziranje pogrešaka. Jedan ključni aspekt je ažuriranje vaših konfiguracijskih datoteka s potrebnim alatima i ovisnostima. U slučaju MSVC141, važno je razumjeti da je ovaj skup alata neophodan za određene projekte, posebno one koji se oslanjaju na starije C++ biblioteke i komponente.
Uključivanje skupa alata MSVC141 u vašu postavku GitHub Actions ne uključuje samo određivanje ispravne verzije Visual Studija, već i osiguravanje da su sve ovisnosti razriješene. To uključuje ispravno konfiguriranje NuGet izvora i korištenje uslužnih programa poput vswhere.exe za provjeru instalacija. Automatiziranje ovih koraka unutar vašeg .yml i PowerShell skripte pomažu u sprječavanju neuspjeha izgradnje i održavaju vaš CI/CD cjevovod glatkim, čime se u konačnici štedi vrijeme i resursi za razvoj.
Uobičajena pitanja i rješenja za integraciju MSVC skupova alata
- Kako mogu odrediti verziju Visual Studio u GitHub radnjama?
- Koristiti vs-version: 2019 u vašem .yml konfiguraciju za postavljanje željene verzije Visual Studio.
- Što je vswhere.exe i zašto se koristi?
- vswhere.exe je uslužni program za lociranje instalacija Visual Studija, osiguravajući da su potrebni skupovi alata dostupni.
- Kako mogu automatizirati instalaciju komponenti koje nedostaju?
- Koristiti Start-Process u PowerShell za pokretanje instalacijskog programa s potrebnim argumentima za nenadzirane instalacije.
- Zašto je važno konfigurirati NuGet izvore?
- Konfiguriranje NuGet izvora osigurava da su sve ovisnosti projekta riješene, što je ključno za uspješne gradnje.
- Kako mogu provjeriti prisutnost alata MSVC141?
- Koristiti vswhere.exe u skripti za provjeru putanje instalacije skupa alata MSVC141.
- Što znači msbuild-version: 16.x navesti?
- Određuje MSBuild verziju koja će se koristiti, osiguravajući kompatibilnost sa skupom alata MSVC141.
- Kako mogu vratiti NuGet pakete u GitHub Actions?
- Koristite naredbu nuget restore nakon čega slijedi vaša datoteka rješenja, npr nuget restore POS.sln.
- Koja je svrha Setup MSBuild akcijski?
- Konfigurira okruženje za korištenje MSBuild-a, potrebnog za izgradnju .NET projekata u GitHub Actions.
- Kako mogu automatski preimenovati artefakte izrade?
- Koristite PowerShell naredbe poput Rename-Item za preimenovanje datoteka na temelju verzije međuverzije.
- Zašto uključiti distribution: 'temurin' u postavkama Jave?
- Ovo specificira JDK distribuciju za korištenje, osiguravajući da je ispravna verzija Java instalirana za vaš projekt.
Završne misli o integraciji MSVC141
Osiguravanje uključenosti skupa alata MSVC141 u vaš tijek rada GitHub Actions ključno je za održavanje stabilnosti i funkcionalnosti vaših Visual Studio 2019 projekata. Ažuriranjem vaših .yml skripti i automatiziranjem postupka instalacije možete spriječiti uobičajene pogreške u izradi povezane s datotekama koje nedostaju. Ovaj proaktivni pristup ne samo da štedi vrijeme, već i poboljšava učinkovitost vašeg CI/CD cjevovoda, omogućujući glatku i pouzdaniju izgradnju projekta.