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 , navodeći verziju Visual Studio s , i osiguravanje da 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 . Ako nije pronađena, skripta pokreće proces instalacije pokretanjem s potrebnim argumentima za ugradnju komponenti koje nedostaju. Ovaj automatizirani pristup osigurava da je potreban skup alata dostupan, sprječavajući 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 - 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\*
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 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
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 za provjeru instalacija. Automatiziranje ovih koraka unutar vašeg 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.
- Kako mogu odrediti verziju Visual Studio u GitHub radnjama?
- Koristiti u vašem konfiguraciju za postavljanje željene verzije Visual Studio.
- Što je i zašto se koristi?
- 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 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 u skripti za provjeru putanje instalacije skupa alata MSVC141.
- Što znači 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 nakon čega slijedi vaša datoteka rješenja, npr .
- Koja je svrha 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 za preimenovanje datoteka na temelju verzije međuverzije.
- Zašto uključiti u postavkama Jave?
- Ovo specificira JDK distribuciju za korištenje, osiguravajući da je ispravna verzija Java instalirana za vaš projekt.
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.