Menyelesaikan Isu MSVC141 dalam Tindakan GitHub
Kami sedang mengusahakan projek Visual Studio 2019 yang baru-baru ini mula membuang pengecualian yang berkaitan dengan fail yang hilang, khususnya 'atlbase.h'. Isu ini nampaknya disebabkan oleh ketiadaan set alat MSVC141, yang tidak diperlukan sehingga beberapa bulan yang lalu.
Dalam artikel ini, kami akan membimbing anda tentang cara mengemas kini skrip .yml anda dalam Tindakan GitHub untuk memasukkan set alat MSVC141. Ini memastikan projek lancar dibina dan mengelakkan ralat 'tidak boleh buka sertakan fail', membantu anda mengekalkan produktiviti dalam aliran kerja pembangunan anda.
| Perintah | Penerangan |
|---|---|
| uses: microsoft/setup-msbuild@v1.1 | Sediakan MSBuild untuk Tindakan GitHub, membenarkan pembinaan projek .NET. |
| vs-version: 2019 | Menentukan versi Visual Studio untuk digunakan, memastikan keserasian dengan set alat MSVC141. |
| msbuild-version: 16.x | Mentakrifkan versi MSBuild, sejajar dengan set alat MSVC141 yang diperlukan untuk penyusunan. |
| extenda/actions/setup-nuget-sources@v0 | Mengkonfigurasikan sumber NuGet dalam Tindakan GitHub, penting untuk memulihkan kebergantungan projek. |
| nuget restore POS.sln | Memulihkan pakej NuGet untuk penyelesaian yang ditentukan, menyelesaikan semua kebergantungan sebelum membina. |
| Copy-Item | Menyalin fail dari satu lokasi ke lokasi lain dalam PowerShell, digunakan di sini untuk mengendalikan templat pangkalan data. |
| Start-Process | Memulakan proses baharu dalam PowerShell, berguna untuk menjalankan pemasang atau boleh laku lain. |
| vswhere.exe | Utiliti untuk mencari pemasangan Visual Studio, digunakan untuk menyemak kehadiran MSVC141. |
Mengintegrasikan Set Alat MSVC141 dalam Tindakan GitHub
Skrip yang disediakan di atas memastikan set alat MSVC141 disertakan dalam aliran kerja Tindakan GitHub anda. Skrip pertama mengemas kini fail konfigurasi YAML untuk memasukkan langkah yang diperlukan untuk menyediakan alatan dan persekitaran yang diperlukan. Ini termasuk menyediakan MSBuild menggunakan microsoft/setup-msbuild@v1.1, menyatakan versi Visual Studio dengan vs-version: 2019, dan memastikan bahawa msbuild-version: 16.x digunakan. Langkah-langkah ini memastikan persekitaran binaan dikonfigurasikan dengan betul untuk menggunakan MSVC141.
Selain itu, skrip PowerShell menyemak kehadiran set alat MSVC141 menggunakan vswhere.exe. Jika ia tidak dijumpai, skrip memulakan proses pemasangan dengan berjalan Start-Process dengan hujah yang diperlukan untuk memasang komponen yang hilang. Pendekatan automatik ini memastikan set alat yang diperlukan tersedia, menghalang fatal error C1083 berkaitan dengan kehilangan termasuk fail seperti 'atlbase.h'. Dengan mengikuti langkah ini, anda boleh mengekalkan proses binaan yang stabil dan konsisten untuk projek Visual Studio 2019 anda dalam Tindakan GitHub.
Kemas kini Skrip .yml untuk Sertakan Set Alat MSVC141
Konfigurasi YAML Tindakan GitHub
name: Pull request - Windowson:pull_request:paths-ignore:- 'Engine/Engine.Android/'- 'Mobile/'jobs:build:runs-on: windows-2022defaults:run:shell: pwshenv:DEFAULT_VERSION: v17.4.500SolutionDir: ${{ github.workspace }}steps:- name: Checkoutuses: actions/checkout@v3with:token: ${{ secrets.RS_GITHUB_TOKEN }}submodules: true- uses: actions/setup-java@v4with:distribution: 'temurin'java-version: '11'- name: Setup MSBuilduses: microsoft/setup-msbuild@v1.1- name: Install Visual Studiouses: microsoft/setup-msbuild@v1.1with:vs-version: 2019msbuild-version: 16.x- name: Setup NuGet sourcesuses: extenda/actions/setup-nuget-sources@v0with:config-file: NuGet.Configsources: |[{"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 packagesrun: nuget restore POS.sln- name: Determine versionid: verrun: .\Build\determine-version.ps1- name: Update assembliesrun: .\Build\update-assemblies.ps1 ${{ steps.ver.outputs.version }} ${{ steps.ver.outputs.full-version }}- name: Generate database templaterun: |.\Common\Database\AppVeyor\gen-databases.ps1 Common\Database abcDbCopy-Item abcDb\Template.db -Destination Common\Database- name: Build solutionrun: msbuild POS.sln @Build\WindowsBuildParams.rsp- name: Build installation packagesrun: |.\Build\exit-on-failure.ps1msbuild Installation\Installation.sln @Build\WindowsBuildParams.rsp -p:BuildNumber=${{ steps.ver.outputs.full-version }}ExitOnFailureGet-ChildItem Installation\Bin\ReleaseRename-Item -Path Installation\Bin\Release\abc.msi -NewName abc-v${{ steps.ver.outputs.full-version }}.msiRename-Item -Path Installation\Bin\Release\abc.exe -NewName abc-v${{ steps.ver.outputs.full-version }}.exeRename-Item -Path Installation\Bin\Release\VRRSSurfaceComponentsEditor.msi -NewName SurfaceComponentsEditor-v${{ steps.ver.outputs.full-version }}.msi- name: Generate customization packagerun: .\Common\Database\AppVeyor\gen-customization-zip.ps1 Common\Database ${{ steps.ver.outputs.full-version }}- name: Save abc Installeruses: actions/upload-artifact@v3with:name: abcInstaller-v${{ steps.ver.outputs.full-version }}path: Installation\Bin\Release\abc-*.msi- name: Save abc Setupuses: actions/upload-artifact@v3with:name: abcSetup-v${{ steps.ver.outputs.full-version }}path: Installation\Bin\Release\abc-*.exe- name: Save Databaseuses: actions/upload-artifact@v3with:name: Database-v${{ steps.ver.outputs.full-version }}path: Common\Database\CustomizationTemplate\*
Pastikan Set Alat MSVC yang Betul dalam Tindakan GitHub
Skrip PowerShell untuk Menyemak dan Memasang 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 installationPathif (-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" -Waitif ($?) {Write-Output "MSVC141 installation completed."}else {Write-Error "Failed to install MSVC141."exit 1}} else {Write-Output "MSVC141 already installed at $vsInstallPath"}exit 0
Memastikan Keserasian dengan Set Alat MSVC dalam Tindakan GitHub
Mengekalkan keserasian dengan pelbagai set alat dalam persekitaran penyepaduan berterusan (CI) seperti Tindakan GitHub adalah penting untuk memastikan binaan yang konsisten dan meminimumkan ralat. Satu aspek utama ialah memastikan fail konfigurasi anda dikemas kini dengan alatan dan kebergantungan yang diperlukan. Dalam kes MSVC141, adalah penting untuk memahami bahawa set alat ini penting untuk projek tertentu, terutamanya yang bergantung pada perpustakaan dan komponen C++ yang lebih lama.
Memasukkan set alat MSVC141 dalam persediaan Tindakan GitHub anda bukan sahaja melibatkan penentuan versi Visual Studio yang betul tetapi juga memastikan semua kebergantungan diselesaikan. Ini termasuk mengkonfigurasi sumber NuGet dengan betul dan menggunakan utiliti seperti vswhere.exe untuk mengesahkan pemasangan. Mengautomatikkan langkah ini dalam anda .yml dan skrip PowerShell membantu mencegah kegagalan binaan dan memastikan saluran paip CI/CD anda berjalan lancar, akhirnya menjimatkan masa dan sumber pembangunan.
Soalan dan Penyelesaian Biasa untuk Mengintegrasikan Set Alat MSVC
- Bagaimanakah cara saya menentukan versi Visual Studio dalam Tindakan GitHub?
- guna vs-version: 2019 dalam awak .yml konfigurasi untuk menetapkan versi Visual Studio yang dikehendaki.
- Apa itu vswhere.exe dan mengapa ia digunakan?
- vswhere.exe ialah utiliti untuk mencari pemasangan Visual Studio, memastikan set alatan yang diperlukan tersedia.
- Bagaimanakah saya boleh mengautomasikan pemasangan komponen yang hilang?
- guna Start-Process dalam PowerShell untuk menjalankan pemasang dengan hujah yang diperlukan untuk pemasangan tanpa pengawasan.
- Mengapakah penting untuk mengkonfigurasi sumber NuGet?
- Mengkonfigurasi sumber NuGet memastikan semua kebergantungan projek diselesaikan, yang penting untuk binaan yang berjaya.
- Bagaimanakah saya boleh menyemak kehadiran set alat MSVC141?
- guna vswhere.exe dalam skrip untuk mengesahkan laluan pemasangan set alat MSVC141.
- Apakah msbuild-version: 16.x nyatakan?
- Ia menentukan versi MSBuild untuk digunakan, memastikan keserasian dengan set alat MSVC141.
- Bagaimanakah cara saya memulihkan pakej NuGet dalam Tindakan GitHub?
- Gunakan arahan nuget restore diikuti dengan fail penyelesaian anda, seperti nuget restore POS.sln.
- Apakah tujuan Setup MSBuild tindakan?
- Ia mengkonfigurasi persekitaran untuk menggunakan MSBuild, yang diperlukan untuk membina projek .NET dalam Tindakan GitHub.
- Bagaimanakah saya boleh menamakan semula artifak binaan secara automatik?
- Gunakan arahan PowerShell seperti Rename-Item untuk menamakan semula fail berdasarkan versi binaan.
- Mengapa termasuk distribution: 'temurin' dalam persediaan Java?
- Ini menentukan pengedaran JDK untuk digunakan, memastikan versi Java yang betul dipasang untuk projek anda.
Pemikiran Akhir tentang Penyepaduan MSVC141
Memastikan set alat MSVC141 disertakan dalam aliran kerja Tindakan GitHub anda adalah penting untuk mengekalkan kestabilan dan kefungsian projek Visual Studio 2019 anda. Dengan mengemas kini skrip .yml anda dan mengautomasikan proses pemasangan, anda boleh menghalang ralat binaan biasa yang berkaitan dengan fail yang hilang. Pendekatan proaktif ini bukan sahaja menjimatkan masa tetapi juga meningkatkan kecekapan saluran paip CI/CD anda, membolehkan pembinaan projek yang lebih lancar dan lebih dipercayai.