MSVC141-ongelmien ratkaiseminen GitHub Actionsissa
Työskentelemme Visual Studio 2019 -projektin parissa, joka alkoi äskettäin heittää poikkeuksia puuttuviin tiedostoihin, erityisesti "atlbase.h". Tämä ongelma näyttää johtuvan MSVC141-työkalusarjan puuttumisesta, jota vaadittiin vasta muutama kuukausi sitten.
Tässä artikkelissa opastamme sinua päivittämään .yml-skriptit GitHub Actionsissa sisällyttämään MSVC141-työkalusarjan. Tämä varmistaa sujuvan projektin rakentamisen ja välttää "ei voi avata sisällyttää tiedostoa" -virheen, mikä auttaa sinua ylläpitämään kehitystyön tuottavuutta.
Komento | Kuvaus |
---|---|
uses: microsoft/setup-msbuild@v1.1 | Määrittää MSBuildin GitHub Actionsille, mikä mahdollistaa .NET-projektien rakentamisen. |
vs-version: 2019 | Määrittää käytettävän Visual Studion version, mikä varmistaa yhteensopivuuden MSVC141-työkalusarjan kanssa. |
msbuild-version: 16.x | Määrittää MSBuild-version, joka on linjassa kääntämistä varten vaaditun MSVC141-työkalusarjan kanssa. |
extenda/actions/setup-nuget-sources@v0 | Konfiguroi NuGet-lähteet GitHub Actionsissa, mikä on välttämätöntä projektiriippuvuuksien palauttamiseksi. |
nuget restore POS.sln | Palauttaa määritetyn ratkaisun NuGet-paketit ja ratkaisee kaikki riippuvuudet ennen rakentamista. |
Copy-Item | Kopioi tiedostoja paikasta toiseen PowerShellissä, jota käytetään tässä tietokantamallien käsittelyyn. |
Start-Process | Käynnistää uuden prosessin PowerShellissä, joka on hyödyllinen asennusohjelmien tai muiden suoritettavien tiedostojen suorittamiseen. |
vswhere.exe | Apuohjelma Visual Studio -asennusten paikallistamiseksi, jota käytetään MSVC141:n olemassaolon tarkistamiseen. |
MSVC141-työkalusarjan integrointi GitHub-toimintoihin
Yllä toimitetut komentosarjat varmistavat, että MSVC141-työkalusarja sisältyy GitHub Actions -työnkulkuusi. Ensimmäinen komentosarja päivittää YAML-määritystiedoston sisältämään tarvittavien työkalujen ja ympäristöjen määrittämiseen tarvittavat vaiheet. Tämä sisältää MSBuildin asettamisen käyttämällä microsoft/setup-msbuild@v1.1, määrittämällä Visual Studio -version vs-version: 2019ja varmistaa, että msbuild-version: 16.x käytetään. Nämä vaiheet varmistavat, että rakennusympäristö on määritetty oikein käyttämään MSVC141:tä.
Lisäksi PowerShell-komentosarja tarkistaa MSVC141-työkalusarjan olemassaolon käyttämällä vswhere.exe. Jos sitä ei löydy, komentosarja käynnistää asennusprosessin suorittamalla Start-Process tarvittavilla argumenteilla puuttuvien komponenttien asentamiseksi. Tämä automaattinen lähestymistapa varmistaa, että tarvittava työkalusarja on saatavilla, mikä estää fatal error C1083 puuttuviin tiedostoihin, kuten 'atlbase.h'. Seuraamalla näitä vaiheita voit ylläpitää vakaata ja johdonmukaista rakennusprosessia Visual Studio 2019 -projekteillesi GitHub Actionsissa.
Päivitä .yml-skripti sisällyttääksesi MSVC141-työkalusarjan
GitHub Actions YAML-kokoonpano
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\*
Varmista, että GitHub-toiminnoissa on oikea MSVC-työkalusarja
PowerShell-skripti MSVC141:n tarkistamiseen ja asentamiseen
$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
Yhteensopivuuden varmistaminen MSVC-työkalusarjojen kanssa GitHub Actionsissa
Yhteensopivuuden ylläpitäminen eri työkalusarjojen kanssa jatkuvan integroinnin (CI) ympäristössä, kuten GitHub Actions, on ratkaisevan tärkeää johdonmukaisten koontiversioiden varmistamiseksi ja virheiden minimoimiseksi. Yksi keskeinen näkökohta on pitää määritystiedostosi ajan tasalla tarvittavilla työkaluilla ja riippuvuuksilla. MSVC141:n tapauksessa on tärkeää ymmärtää, että tämä työkalusarja on välttämätön tietyille projekteille, erityisesti niille, jotka perustuvat vanhempiin C++-kirjastoihin ja -komponentteihin.
MSVC141-työkalusarjan sisällyttäminen GitHub Actions -asetuksiin edellyttää oikean Visual Studio -version määrittämisen lisäksi myös kaikkien riippuvuuksien ratkaisemisen varmistamista. Tähän sisältyy NuGet-lähteiden määrittäminen oikein ja apuohjelmien, kuten esim vswhere.exe asennusten tarkistamiseen. Näiden vaiheiden automatisointi .yml ja PowerShell-komentosarjat auttavat estämään koontivirheitä ja pitävät CI/CD-putkilinjasi käynnissä sujuvasti, mikä säästää viime kädessä kehitysaikaa ja resursseja.
Yleisiä kysymyksiä ja ratkaisuja MSVC-työkalusarjojen integroimiseen
- Kuinka määritän Visual Studio -version GitHub Actionsissa?
- Käyttää vs-version: 2019 sinun .yml konfiguraatio määrittääksesi haluamasi Visual Studio -version.
- Mikä on vswhere.exe ja miksi sitä käytetään?
- vswhere.exe on apuohjelma Visual Studio -asennusten paikantamiseen ja varmistaa, että tarvittavat työkalusarjat ovat saatavilla.
- Kuinka voin automatisoida puuttuvien komponenttien asennuksen?
- Käyttää Start-Process PowerShellissä suorittaaksesi asennusohjelman tarvittavilla argumenteilla valvomattomia asennuksia varten.
- Miksi NuGet-lähteiden määrittäminen on tärkeää?
- NuGet-lähteiden määrittäminen varmistaa, että kaikki projektiriippuvuudet on ratkaistu, mikä on ratkaisevan tärkeää onnistuneiden koontiversioiden kannalta.
- Kuinka tarkistan MSVC141-työkalusarjan olemassaolon?
- Käyttää vswhere.exe komentosarjassa MSVC141-työkalusarjan asennuspolun tarkistamiseksi.
- Mikä tekee msbuild-version: 16.x täsmentää?
- Se määrittää käytettävän MSBuild-version, mikä varmistaa yhteensopivuuden MSVC141-työkalusarjan kanssa.
- Kuinka palautan NuGet-paketit GitHub Actionsissa?
- Käytä komentoa nuget restore jota seuraa ratkaisutiedostosi, kuten nuget restore POS.sln.
- Mikä on tarkoitus Setup MSBuild toiminta?
- Se määrittää ympäristön käyttämään MSBuildia, jota tarvitaan .NET-projektien rakentamiseen GitHub Actionsissa.
- Kuinka voin nimetä rakennusartefaktit uudelleen automaattisesti?
- Käytä PowerShell-komentoja, kuten Rename-Item tiedostojen uudelleennimeämiseksi koontiversion perusteella.
- Miksi sisällyttää distribution: 'temurin' Java-asetuksissa?
- Tämä määrittää käytettävän JDK-jakelun varmistaen, että projektillesi on asennettu oikea Java-versio.
Viimeisiä ajatuksia MSVC141:n integroimisesta
MSVC141-työkalusarjan sisällyttäminen GitHub Actions -työnkulkuun on välttämätöntä Visual Studio 2019 -projektien vakauden ja toimivuuden ylläpitämiseksi. Päivittämällä .yml-komentosarjat ja automatisoimalla asennusprosessin voit estää puuttuviin tiedostoihin liittyvät yleiset koontivirheet. Tämä ennakoiva lähestymistapa paitsi säästää aikaa, myös parantaa CI/CD-putkilinjasi tehokkuutta, mikä mahdollistaa sujuvamman ja luotettavamman projektin rakentamisen.