Panduan untuk Kemas Kini Skrip .yml untuk MSVC141 dalam GitHub

Panduan untuk Kemas Kini Skrip .yml untuk MSVC141 dalam GitHub
Panduan untuk Kemas Kini Skrip .yml untuk MSVC141 dalam GitHub

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 - 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 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 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 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

  1. Bagaimanakah cara saya menentukan versi Visual Studio dalam Tindakan GitHub?
  2. guna vs-version: 2019 dalam awak .yml konfigurasi untuk menetapkan versi Visual Studio yang dikehendaki.
  3. Apa itu vswhere.exe dan mengapa ia digunakan?
  4. vswhere.exe ialah utiliti untuk mencari pemasangan Visual Studio, memastikan set alatan yang diperlukan tersedia.
  5. Bagaimanakah saya boleh mengautomasikan pemasangan komponen yang hilang?
  6. guna Start-Process dalam PowerShell untuk menjalankan pemasang dengan hujah yang diperlukan untuk pemasangan tanpa pengawasan.
  7. Mengapakah penting untuk mengkonfigurasi sumber NuGet?
  8. Mengkonfigurasi sumber NuGet memastikan semua kebergantungan projek diselesaikan, yang penting untuk binaan yang berjaya.
  9. Bagaimanakah saya boleh menyemak kehadiran set alat MSVC141?
  10. guna vswhere.exe dalam skrip untuk mengesahkan laluan pemasangan set alat MSVC141.
  11. Apakah msbuild-version: 16.x nyatakan?
  12. Ia menentukan versi MSBuild untuk digunakan, memastikan keserasian dengan set alat MSVC141.
  13. Bagaimanakah cara saya memulihkan pakej NuGet dalam Tindakan GitHub?
  14. Gunakan arahan nuget restore diikuti dengan fail penyelesaian anda, seperti nuget restore POS.sln.
  15. Apakah tujuan Setup MSBuild tindakan?
  16. Ia mengkonfigurasi persekitaran untuk menggunakan MSBuild, yang diperlukan untuk membina projek .NET dalam Tindakan GitHub.
  17. Bagaimanakah saya boleh menamakan semula artifak binaan secara automatik?
  18. Gunakan arahan PowerShell seperti Rename-Item untuk menamakan semula fail berdasarkan versi binaan.
  19. Mengapa termasuk distribution: 'temurin' dalam persediaan Java?
  20. 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.