Menyelesaikan Masalah MSVC141 di Tindakan GitHub
Kami sedang mengerjakan proyek Visual Studio 2019 yang baru-baru ini mulai memberikan pengecualian terkait file yang hilang, khususnya 'atlbase.h'. Masalah ini tampaknya disebabkan oleh tidak adanya perangkat MSVC141, yang baru diperlukan beberapa bulan yang lalu.
Dalam artikel ini, kami akan memandu Anda tentang cara memperbarui skrip .yml Anda di GitHub Actions untuk menyertakan perangkat MSVC141. Hal ini memastikan kelancaran pembangunan proyek dan menghindari kesalahan 'tidak dapat membuka sertakan file', sehingga membantu Anda menjaga produktivitas dalam alur kerja pengembangan Anda.
Memerintah | Keterangan |
---|---|
uses: microsoft/setup-msbuild@v1.1 | Menyiapkan MSBuild untuk GitHub Actions, memungkinkan pembangunan proyek .NET. |
vs-version: 2019 | Menentukan versi Visual Studio yang akan digunakan, memastikan kompatibilitas dengan perangkat MSVC141. |
msbuild-version: 16.x | Mendefinisikan versi MSBuild, menyelaraskan dengan perangkat MSVC141 yang diperlukan untuk kompilasi. |
extenda/actions/setup-nuget-sources@v0 | Mengonfigurasi sumber NuGet di GitHub Actions, penting untuk memulihkan dependensi proyek. |
nuget restore POS.sln | Mengembalikan paket NuGet untuk solusi yang ditentukan, menyelesaikan semua dependensi sebelum build. |
Copy-Item | Menyalin file dari satu lokasi ke lokasi lain di PowerShell, digunakan di sini untuk menangani templat database. |
Start-Process | Memulai proses baru di PowerShell, berguna untuk menjalankan penginstal atau executable lainnya. |
vswhere.exe | Sebuah utilitas untuk menemukan instalasi Visual Studio, digunakan untuk memeriksa keberadaan MSVC141. |
Mengintegrasikan Toolset MSVC141 dalam Tindakan GitHub
Skrip yang disediakan di atas memastikan bahwa rangkaian alat MSVC141 disertakan dalam alur kerja GitHub Actions Anda. Skrip pertama memperbarui file konfigurasi YAML untuk menyertakan langkah-langkah yang diperlukan untuk menyiapkan alat dan lingkungan yang diperlukan. Ini termasuk menyiapkan MSBuild menggunakan , menentukan versi Visual Studio dengan , dan memastikan bahwa digunakan. Langkah-langkah ini memastikan lingkungan build dikonfigurasi dengan benar untuk menggunakan MSVC141.
Selain itu, skrip PowerShell memeriksa keberadaan perangkat MSVC141 menggunakan . Jika tidak ditemukan, skrip akan memulai proses instalasi dengan menjalankannya dengan argumen yang diperlukan untuk menginstal komponen yang hilang. Pendekatan otomatis ini memastikan bahwa perangkat yang diperlukan tersedia, sehingga mencegah terkait dengan hilangnya file penyertaan seperti 'atlbase.h'. Dengan mengikuti langkah-langkah ini, Anda dapat mempertahankan proses pembangunan yang stabil dan konsisten untuk proyek Visual Studio 2019 Anda di GitHub Actions.
Perbarui Skrip .yml untuk Menyertakan Perangkat MSVC141
Konfigurasi YAML Tindakan 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\*
Pastikan Perangkat MSVC yang Benar di Tindakan GitHub
Skrip PowerShell untuk Memeriksa dan Menginstal 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
Memastikan Kompatibilitas dengan Perangkat MSVC di Tindakan GitHub
Mempertahankan kompatibilitas dengan berbagai perangkat dalam lingkungan integrasi berkelanjutan (CI) seperti GitHub Actions sangat penting untuk memastikan pembangunan yang konsisten dan meminimalkan kesalahan. Salah satu aspek utamanya adalah selalu memperbarui file konfigurasi Anda dengan alat dan dependensi yang diperlukan. Dalam kasus MSVC141, penting untuk dipahami bahwa perangkat ini penting untuk proyek tertentu, terutama proyek yang mengandalkan pustaka dan komponen C++ lama.
Menyertakan perangkat MSVC141 dalam penyiapan Tindakan GitHub Anda tidak hanya melibatkan penentuan versi Visual Studio yang benar tetapi juga memastikan semua dependensi teratasi. Ini termasuk mengonfigurasi sumber NuGet dengan benar dan menggunakan utilitas seperti untuk memverifikasi instalasi. Mengotomatiskan langkah-langkah ini dalam diri Anda dan skrip PowerShell membantu mencegah kegagalan build dan menjaga alur CI/CD Anda berjalan lancar, sehingga menghemat waktu dan sumber daya pengembangan.
- Bagaimana cara menentukan versi Visual Studio di GitHub Actions?
- Menggunakan di dalam kamu konfigurasi untuk mengatur versi Visual Studio yang diinginkan.
- Apa dan mengapa itu digunakan?
- adalah utilitas untuk menemukan instalasi Visual Studio, memastikan perangkat yang diperlukan tersedia.
- Bagaimana cara mengotomatiskan instalasi komponen yang hilang?
- Menggunakan di PowerShell untuk menjalankan penginstal dengan argumen yang diperlukan untuk instalasi tanpa pengawasan.
- Mengapa penting untuk mengonfigurasi sumber NuGet?
- Mengonfigurasi sumber NuGet memastikan semua ketergantungan proyek teratasi, yang sangat penting untuk keberhasilan pembangunan.
- Bagaimana cara memeriksa keberadaan toolset MSVC141?
- Menggunakan dalam skrip untuk memverifikasi jalur instalasi perangkat MSVC141.
- Apa artinya? menentukan?
- Ini menentukan versi MSBuild yang akan digunakan, memastikan kompatibilitas dengan perangkat MSVC141.
- Bagaimana cara memulihkan paket NuGet di GitHub Actions?
- Gunakan perintah diikuti oleh file solusi Anda, seperti .
- Apa tujuan dari tindakan?
- Ini mengonfigurasi lingkungan untuk menggunakan MSBuild, yang diperlukan untuk membangun proyek .NET di GitHub Actions.
- Bagaimana cara mengganti nama artefak bangunan secara otomatis?
- Gunakan perintah PowerShell seperti untuk mengganti nama file berdasarkan versi build.
- Mengapa menyertakan dalam pengaturan Java?
- Ini menentukan distribusi JDK yang akan digunakan, memastikan versi Java yang benar telah diinstal untuk proyek Anda.
Memastikan bahwa rangkaian alat MSVC141 disertakan dalam alur kerja GitHub Actions Anda sangat penting untuk menjaga stabilitas dan fungsionalitas proyek Visual Studio 2019 Anda. Dengan memperbarui skrip .yml dan mengotomatiskan proses instalasi, Anda dapat mencegah kesalahan build umum terkait dengan file yang hilang. Pendekatan proaktif ini tidak hanya menghemat waktu namun juga meningkatkan efisiensi pipeline CI/CD Anda, memungkinkan pembangunan proyek yang lebih lancar dan andal.