Reševanje težav z MSVC141 v dejanjih GitHub
Delamo na projektu Visual Studio 2019, ki je pred kratkim začel ustvarjati izjeme, povezane z manjkajočimi datotekami, natančneje »atlbase.h«. Zdi se, da je ta težava posledica odsotnosti nabora orodij MSVC141, ki ni bil potreben do pred nekaj meseci.
V tem članku vas bomo vodili, kako posodobiti svoje skripte .yml v GitHub Actions, da vključite nabor orodij MSVC141. To zagotavlja nemoteno gradnjo projekta in se izogne napaki »vključene datoteke ni mogoče odpreti«, kar vam pomaga vzdrževati produktivnost v delovnem procesu razvoja.
Ukaz | Opis |
---|---|
uses: microsoft/setup-msbuild@v1.1 | Nastavi MSBuild for GitHub Actions, ki omogoča gradnjo projektov .NET. |
vs-version: 2019 | Podaja različico Visual Studio za uporabo, kar zagotavlja združljivost z naborom orodij MSVC141. |
msbuild-version: 16.x | Definira različico MSBuild, ki je usklajena z zahtevanim naborom orodij MSVC141 za prevajanje. |
extenda/actions/setup-nuget-sources@v0 | Konfigurira vire NuGet v dejanjih GitHub, kar je bistveno za obnovitev odvisnosti projekta. |
nuget restore POS.sln | Obnovi pakete NuGet za določeno rešitev in razreši vse odvisnosti pred izdelavo. |
Copy-Item | Kopira datoteke z ene lokacije na drugo v lupini PowerShell, ki se tukaj uporablja za obdelavo predlog baze podatkov. |
Start-Process | Zažene nov proces v lupini PowerShell, uporaben za zagon namestitvenih programov ali drugih izvršljivih datotek. |
vswhere.exe | Pripomoček za iskanje namestitve Visual Studio, ki se uporablja za preverjanje prisotnosti MSVC141. |
Integracija nabora orodij MSVC141 v dejanja GitHub
Zgornji skripti zagotavljajo, da je nabor orodij MSVC141 vključen v vaš potek dela GitHub Actions. Prvi skript posodobi konfiguracijsko datoteko YAML, da vključuje korake, potrebne za nastavitev zahtevanih orodij in okolij. To vključuje nastavitev MSBuild z uporabo , pri čemer določite različico Visual Studio z , in zagotavljanje, da se uporablja. Ti koraki zagotavljajo, da je gradbeno okolje pravilno konfigurirano za uporabo MSVC141.
Poleg tega skript PowerShell preveri prisotnost nabora orodij MSVC141 z uporabo . Če ga ne najde, skript sproži postopek namestitve z zagonom s potrebnimi argumenti za namestitev manjkajočih komponent. Ta samodejni pristop zagotavlja, da je na voljo zahtevani nabor orodij, kar preprečuje povezane z manjkajočimi vključujejo datoteke, kot je 'atlbase.h'. Če sledite tem korakom, lahko vzdržujete stabilen in dosleden postopek gradnje za svoje projekte Visual Studio 2019 v GitHub Actions.
Posodobite skript .yml, da bo vključeval nabor orodij MSVC141
Konfiguracija YAML dejanj GitHub
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\*
Zagotovite pravilen nabor orodij MSVC v dejanjih GitHub
Skript PowerShell za preverjanje in namestitev 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
Zagotavljanje združljivosti z nabori orodij MSVC v dejanjih GitHub
Ohranjanje združljivosti z različnimi nabori orodij v okolju neprekinjene integracije (CI), kot je GitHub Actions, je ključnega pomena za zagotavljanje doslednih gradenj in zmanjševanje napak. Eden ključnih vidikov je posodabljanje vaših konfiguracijskih datotek s potrebnimi orodji in odvisnostmi. V primeru MSVC141 je pomembno razumeti, da je ta nabor orodij bistven za nekatere projekte, zlasti tiste, ki se zanašajo na starejše knjižnice in komponente C++.
Vključitev nabora orodij MSVC141 v vašo nastavitev GitHub Actions ne vključuje samo določanja pravilne različice Visual Studio, temveč tudi zagotavljanje razrešenosti vseh odvisnosti. To vključuje pravilno konfiguracijo virov NuGet in uporabo pripomočkov, kot je za preverjanje inštalacij. Avtomatizacija teh korakov v vašem in skripti PowerShell pomagajo preprečiti napake pri gradnji in skrbijo za nemoteno delovanje vašega cevovoda CI/CD, kar na koncu prihrani razvojni čas in vire.
- Kako določim različico Visual Studio v GitHub Actions?
- Uporaba v tvojem konfiguracijo, da nastavite želeno različico Visual Studio.
- Kaj je in zakaj se uporablja?
- je pripomoček za iskanje namestitve Visual Studio, ki zagotavlja, da so na voljo potrebni nabori orodij.
- Kako lahko avtomatiziram namestitev manjkajočih komponent?
- Uporaba v PowerShell za zagon namestitvenega programa s potrebnimi argumenti za nenadzorovane namestitve.
- Zakaj je pomembno konfigurirati vire NuGet?
- Konfiguriranje virov NuGet zagotavlja razrešitev vseh odvisnosti projekta, kar je ključnega pomena za uspešne gradnje.
- Kako preverim prisotnost nabora orodij MSVC141?
- Uporaba v skriptu za preverjanje namestitvene poti kompleta orodij MSVC141.
- Kaj počne določiti?
- Določa različico MSBuild, ki bo uporabljena, kar zagotavlja združljivost z naborom orodij MSVC141.
- Kako obnovim pakete NuGet v GitHub Actions?
- Uporabite ukaz ki ji sledi vaša datoteka rešitve, na primer .
- Kakšen je namen akcija?
- Konfigurira okolje za uporabo MSBuild, potrebnega za gradnjo projektov .NET v GitHub Actions.
- Kako lahko samodejno preimenujem artefakte gradnje?
- Uporabite ukaze PowerShell, kot je za preimenovanje datotek glede na gradbeno različico.
- Zakaj vključiti v nastavitvah Jave?
- To določa distribucijo JDK za uporabo, kar zagotavlja, da je za vaš projekt nameščena pravilna različica Jave.
Zagotavljanje, da je nabor orodij MSVC141 vključen v vaš potek dela GitHub Actions, je bistveno za ohranjanje stabilnosti in funkcionalnosti vaših projektov Visual Studio 2019. Če posodobite skripte .yml in avtomatizirate postopek namestitve, lahko preprečite pogoste napake pri gradnji, povezane z manjkajočimi datotekami. Ta proaktivni pristop ne le prihrani čas, ampak tudi izboljša učinkovitost vašega cevovoda CI/CD, kar omogoča bolj gladke in zanesljivejše gradnje projektov.