MSVC141 problēmu risināšana GitHub darbībās
Mēs strādājam pie Visual Studio 2019 projekta, kurā nesen tika ieviesti izņēmumi saistībā ar trūkstošiem failiem, īpaši “atlbase.h”. Šķiet, ka šī problēma ir saistīta ar MSVC141 rīkkopas trūkumu, kas nebija vajadzīgs tikai pirms dažiem mēnešiem.
Šajā rakstā mēs sniegsim norādījumus par to, kā atjaunināt .yml skriptus pakalpojumā GitHub Actions, lai iekļautu rīkkopu MSVC141. Tas nodrošina vienmērīgu projektu veidošanu un novērš kļūdu “nevar atvērt, iekļaujot failu”, palīdzot saglabāt produktivitāti izstrādes darbplūsmā.
Pavēli | Apraksts |
---|---|
uses: microsoft/setup-msbuild@v1.1 | Iestata MSBuild for GitHub Actions, ļaujot veidot .NET projektus. |
vs-version: 2019 | Norāda izmantojamo Visual Studio versiju, nodrošinot saderību ar MSVC141 rīku kopu. |
msbuild-version: 16.x | Definē MSBuild versiju, saskaņojot ar kompilācijai nepieciešamo MSVC141 rīku kopu. |
extenda/actions/setup-nuget-sources@v0 | Konfigurē NuGet avotus GitHub Actions, kas ir būtiski, lai atjaunotu projekta atkarības. |
nuget restore POS.sln | Atjauno NuGet pakotnes norādītajam risinājumam, atrisinot visas atkarības pirms izveides. |
Copy-Item | Kopē failus no vienas vietas uz citu programmā PowerShell, ko šeit izmanto datu bāzes veidņu apstrādei. |
Start-Process | Sāk jaunu procesu programmā PowerShell, kas noder instalētāju vai citu izpildāmo failu palaišanai. |
vswhere.exe | Lietderība Visual Studio instalāciju atrašanai, ko izmanto, lai pārbaudītu MSVC141 klātbūtni. |
MSVC141 rīkkopas integrēšana GitHub darbībās
Iepriekš sniegtie skripti nodrošina, ka MSVC141 rīku kopa ir iekļauta jūsu GitHub Actions darbplūsmā. Pirmais skripts atjaunina YAML konfigurācijas failu, iekļaujot tajā nepieciešamās darbības, lai iestatītu nepieciešamos rīkus un vidi. Tas ietver MSBuild iestatīšanu, izmantojot microsoft/setup-msbuild@v1.1, norādot Visual Studio versiju ar vs-version: 2019, un nodrošinot, ka msbuild-version: 16.x tiek izmantots. Šīs darbības nodrošina, ka veidošanas vide ir pareizi konfigurēta, lai izmantotu MSVC141.
Turklāt PowerShell skripts pārbauda MSVC141 rīkkopas klātbūtni, izmantojot vswhere.exe. Ja tas netiek atrasts, skripts sāk instalēšanas procesu, palaižot Start-Process ar nepieciešamajiem argumentiem, lai instalētu trūkstošās sastāvdaļas. Šī automatizētā pieeja nodrošina, ka ir pieejams nepieciešamais rīku komplekts, novēršot fatal error C1083 saistībā ar trūkstošajiem ietver tādus failus kā "atlbase.h". Veicot šīs darbības, varat uzturēt stabilu un konsekventu Visual Studio 2019 projektu veidošanas procesu pakalpojumā GitHub Actions.
Atjauniniet .yml skriptu, lai iekļautu MSVC141 rīkkopu
GitHub Actions YAML konfigurācija
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\*
Nodrošiniet pareizu MSVC rīku kopu GitHub darbībās
PowerShell skripts MSVC141 pārbaudei un instalēšanai
$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
Saderības ar MSVC rīku komplektiem nodrošināšana GitHub darbībās
Saderības uzturēšana ar dažādām rīku kopām nepārtrauktas integrācijas (CI) vidē, piemēram, GitHub Actions, ir ļoti svarīga, lai nodrošinātu konsekventu būvējumu un samazinātu kļūdas. Viens no galvenajiem aspektiem ir atjaunināt konfigurācijas failus ar nepieciešamajiem rīkiem un atkarībām. MSVC141 gadījumā ir svarīgi saprast, ka šī rīku kopa ir būtiska noteiktiem projektiem, īpaši tiem, kas paļaujas uz vecākām C++ bibliotēkām un komponentiem.
MSVC141 rīku kopas iekļaušana GitHub Actions iestatījumos ietver ne tikai pareizās Visual Studio versijas norādīšanu, bet arī visu atkarību atrisināšanas nodrošināšanu. Tas ietver pareizu NuGet avotu konfigurēšanu un tādu utilītu izmantošanu kā vswhere.exe lai pārbaudītu instalācijas. Automatizējot šīs darbības jūsu .yml un PowerShell skripti palīdz novērst izveides kļūmes un nodrošina jūsu CI/CD konveijera nevainojamu darbību, galu galā ietaupot izstrādes laiku un resursus.
Bieži uzdotie jautājumi un risinājumi MSVC rīku kopu integrēšanai
- Kā programmā GitHub Actions norādīt Visual Studio versiju?
- Izmantot vs-version: 2019 tavā .yml konfigurāciju, lai iestatītu vēlamo Visual Studio versiju.
- Kas ir vswhere.exe un kāpēc to lieto?
- vswhere.exe ir utilīta Visual Studio instalāciju atrašanai, nodrošinot nepieciešamo rīku komplektu pieejamību.
- Kā es varu automatizēt trūkstošo komponentu instalēšanu?
- Izmantot Start-Process programmā PowerShell, lai palaistu instalētāju ar nepieciešamajiem argumentiem bez uzraudzības instalācijām.
- Kāpēc ir svarīgi konfigurēt NuGet avotus?
- NuGet avotu konfigurēšana nodrošina visu projektu atkarību atrisināšanu, kas ir ļoti svarīgi veiksmīgai būvēšanai.
- Kā pārbaudīt MSVC141 rīku kopas klātbūtni?
- Izmantot vswhere.exe skriptā, lai pārbaudītu MSVC141 rīkkopas instalēšanas ceļu.
- Ko dara msbuild-version: 16.x precizēt?
- Tas norāda izmantojamo MSBuild versiju, nodrošinot saderību ar MSVC141 rīku kopu.
- Kā atjaunot NuGet pakotnes pakalpojumā GitHub Actions?
- Izmantojiet komandu nuget restore kam seko jūsu risinājuma fails, piemēram nuget restore POS.sln.
- Kāds ir mērķis Setup MSBuild darbība?
- Tā konfigurē vidi, lai izmantotu MSBuild, kas nepieciešama .NET projektu veidošanai programmā GitHub Actions.
- Kā es varu automātiski pārdēvēt būvēšanas artefaktus?
- Izmantojiet tādas PowerShell komandas kā Rename-Item lai pārdēvētu failus, pamatojoties uz būvējuma versiju.
- Kāpēc iekļaut distribution: 'temurin' Java iestatījumos?
- Tas norāda izmantojamo JDK izplatīšanu, nodrošinot, ka jūsu projektam ir instalēta pareizā Java versija.
Pēdējās domas par MSVC141 integrēšanu
Lai nodrošinātu Visual Studio 2019 projektu stabilitāti un funkcionalitāti, ir svarīgi nodrošināt, lai MSVC141 rīkkopa tiktu iekļauta jūsu GitHub Actions darbplūsmā. Atjauninot .yml skriptus un automatizējot instalēšanas procesu, varat novērst bieži sastopamas veidošanas kļūdas, kas saistītas ar trūkstošiem failiem. Šī proaktīvā pieeja ne tikai ietaupa laiku, bet arī uzlabo jūsu CI/CD konveijera efektivitāti, nodrošinot vienmērīgāku un uzticamāku projektu izveidi.