Panduan untuk Memperbarui Skrip .yml untuk MSVC141 di GitHub

Panduan untuk Memperbarui Skrip .yml untuk MSVC141 di GitHub
Panduan untuk Memperbarui Skrip .yml untuk MSVC141 di GitHub

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 microsoft/setup-msbuild@v1.1, menentukan versi Visual Studio dengan vs-version: 2019, dan memastikan bahwa msbuild-version: 16.x digunakan. Langkah-langkah ini memastikan lingkungan build dikonfigurasi dengan benar untuk menggunakan MSVC141.

Selain itu, skrip PowerShell memeriksa keberadaan perangkat MSVC141 menggunakan vswhere.exe. Jika tidak ditemukan, skrip akan memulai proses instalasi dengan menjalankannya Start-Process dengan argumen yang diperlukan untuk menginstal komponen yang hilang. Pendekatan otomatis ini memastikan bahwa perangkat yang diperlukan tersedia, sehingga mencegah fatal error C1083 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 vswhere.exe untuk memverifikasi instalasi. Mengotomatiskan langkah-langkah ini dalam diri Anda .yml dan skrip PowerShell membantu mencegah kegagalan build dan menjaga alur CI/CD Anda berjalan lancar, sehingga menghemat waktu dan sumber daya pengembangan.

Pertanyaan Umum dan Solusi untuk Mengintegrasikan Perangkat MSVC

  1. Bagaimana cara menentukan versi Visual Studio di GitHub Actions?
  2. Menggunakan vs-version: 2019 di dalam kamu .yml konfigurasi untuk mengatur versi Visual Studio yang diinginkan.
  3. Apa vswhere.exe dan mengapa itu digunakan?
  4. vswhere.exe adalah utilitas untuk menemukan instalasi Visual Studio, memastikan perangkat yang diperlukan tersedia.
  5. Bagaimana cara mengotomatiskan instalasi komponen yang hilang?
  6. Menggunakan Start-Process di PowerShell untuk menjalankan penginstal dengan argumen yang diperlukan untuk instalasi tanpa pengawasan.
  7. Mengapa penting untuk mengonfigurasi sumber NuGet?
  8. Mengonfigurasi sumber NuGet memastikan semua ketergantungan proyek teratasi, yang sangat penting untuk keberhasilan pembangunan.
  9. Bagaimana cara memeriksa keberadaan toolset MSVC141?
  10. Menggunakan vswhere.exe dalam skrip untuk memverifikasi jalur instalasi perangkat MSVC141.
  11. Apa artinya? msbuild-version: 16.x menentukan?
  12. Ini menentukan versi MSBuild yang akan digunakan, memastikan kompatibilitas dengan perangkat MSVC141.
  13. Bagaimana cara memulihkan paket NuGet di GitHub Actions?
  14. Gunakan perintah nuget restore diikuti oleh file solusi Anda, seperti nuget restore POS.sln.
  15. Apa tujuan dari Setup MSBuild tindakan?
  16. Ini mengonfigurasi lingkungan untuk menggunakan MSBuild, yang diperlukan untuk membangun proyek .NET di GitHub Actions.
  17. Bagaimana cara mengganti nama artefak bangunan secara otomatis?
  18. Gunakan perintah PowerShell seperti Rename-Item untuk mengganti nama file berdasarkan versi build.
  19. Mengapa menyertakan distribution: 'temurin' dalam pengaturan Java?
  20. Ini menentukan distribusi JDK yang akan digunakan, memastikan versi Java yang benar telah diinstal untuk proyek Anda.

Pemikiran Akhir tentang Mengintegrasikan MSVC141

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.