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 , s uvedením verzie Visual Studio s a zabezpečiť, aby 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 . Ak sa nenájde, skript spustí proces inštalácie spustením 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 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 - 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\*
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 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
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 na overenie inštalácií. Automatizácia týchto krokov v rámci vášho 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.
- Ako určím verziu Visual Studio v akciách GitHub?
- Použite v tvojom konfiguráciu na nastavenie požadovanej verzie Visual Studio.
- Čo je a prečo sa používa?
- 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 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 v skripte na overenie inštalačnej cesty sady nástrojov MSVC141.
- Čo robí š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 nasledovaný súborom vášho riešenia, napr .
- Aký je účel 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 premenovať súbory na základe verzie zostavy.
- Prečo zahrnúť 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.
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.