Hướng dẫn cập nhật tập lệnh .yml cho MSVC141 trong GitHub

Hướng dẫn cập nhật tập lệnh .yml cho MSVC141 trong GitHub
Hướng dẫn cập nhật tập lệnh .yml cho MSVC141 trong GitHub

Giải quyết các vấn đề MSVC141 trong các hành động GitHub

Chúng tôi đang làm việc trên một dự án Visual Studio 2019 gần đây đã bắt đầu đưa ra các ngoại lệ liên quan đến các tệp bị thiếu, cụ thể là 'atlbase.h'. Sự cố này dường như là do thiếu bộ công cụ MSVC141, vốn không được yêu cầu cho đến vài tháng trước.

Trong bài viết này, chúng tôi sẽ hướng dẫn bạn cách cập nhật tập lệnh .yml trong GitHub Actions để bao gồm bộ công cụ MSVC141. Điều này đảm bảo quá trình xây dựng dự án diễn ra suôn sẻ và tránh lỗi 'không thể mở tệp bao gồm', giúp bạn duy trì năng suất trong quy trình phát triển của mình.

Yêu cầu Sự miêu tả
uses: microsoft/setup-msbuild@v1.1 Thiết lập MSBuild cho GitHub Actions, cho phép xây dựng các dự án .NET.
vs-version: 2019 Chỉ định phiên bản Visual Studio sẽ sử dụng, đảm bảo khả năng tương thích với bộ công cụ MSVC141.
msbuild-version: 16.x Xác định phiên bản MSBuild, căn chỉnh với bộ công cụ MSVC141 cần thiết để biên dịch.
extenda/actions/setup-nuget-sources@v0 Định cấu hình nguồn NuGet trong GitHub Actions, điều cần thiết để khôi phục các phần phụ thuộc của dự án.
nuget restore POS.sln Khôi phục các gói NuGet cho giải pháp đã chỉ định, giải quyết tất cả các phần phụ thuộc trước khi xây dựng.
Copy-Item Sao chép tệp từ vị trí này sang vị trí khác trong PowerShell, được sử dụng ở đây để xử lý các mẫu cơ sở dữ liệu.
Start-Process Bắt đầu một quy trình mới trong PowerShell, hữu ích khi chạy trình cài đặt hoặc các tệp thực thi khác.
vswhere.exe Một tiện ích để xác định vị trí cài đặt Visual Studio, được sử dụng để kiểm tra sự hiện diện của MSVC141.

Tích hợp bộ công cụ MSVC141 trong GitHub Actions

Các tập lệnh được cung cấp ở trên đảm bảo rằng bộ công cụ MSVC141 được đưa vào quy trình làm việc Hành động GitHub của bạn. Tập lệnh đầu tiên cập nhật tệp cấu hình YAML để bao gồm các bước cần thiết để thiết lập các công cụ và môi trường cần thiết. Điều này bao gồm việc thiết lập MSBuild bằng cách sử dụng microsoft/setup-msbuild@v1.1, chỉ định phiên bản Visual Studio với vs-version: 2019, và đảm bảo rằng msbuild-version: 16.x Được sử dụng. Các bước này đảm bảo môi trường xây dựng được cấu hình chính xác để sử dụng MSVC141.

Ngoài ra, tập lệnh PowerShell kiểm tra sự hiện diện của bộ công cụ MSVC141 bằng cách sử dụng vswhere.exe. Nếu không tìm thấy, tập lệnh sẽ bắt đầu quá trình cài đặt bằng cách chạy Start-Process với các đối số cần thiết để cài đặt các thành phần còn thiếu. Cách tiếp cận tự động này đảm bảo rằng bộ công cụ cần thiết có sẵn, ngăn ngừa fatal error C1083 liên quan đến việc thiếu các tệp bao gồm như 'atlbase.h'. Bằng cách làm theo các bước này, bạn có thể duy trì quy trình xây dựng ổn định và nhất quán cho các dự án Visual Studio 2019 của mình trong GitHub Actions.

Cập nhật tập lệnh .yml để bao gồm bộ công cụ MSVC141

Hành động GitHub Cấu hình YAML

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

Đảm bảo Bộ công cụ MSVC chính xác trong các hành động GitHub

Tập lệnh PowerShell để kiểm tra và cài đặt 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

Đảm bảo khả năng tương thích với bộ công cụ MSVC trong hành động GitHub

Duy trì khả năng tương thích với các bộ công cụ khác nhau trong môi trường tích hợp liên tục (CI) như GitHub Actions là rất quan trọng để đảm bảo các bản dựng nhất quán và giảm thiểu lỗi. Một khía cạnh quan trọng là luôn cập nhật các tệp cấu hình của bạn bằng các công cụ và phần phụ thuộc cần thiết. Trong trường hợp MSVC141, điều quan trọng là phải hiểu rằng bộ công cụ này rất cần thiết cho một số dự án nhất định, đặc biệt là những dự án dựa vào các thành phần và thư viện C++ cũ hơn.

Việc đưa bộ công cụ MSVC141 vào thiết lập Hành động GitHub của bạn không chỉ liên quan đến việc chỉ định phiên bản Visual Studio chính xác mà còn đảm bảo giải quyết tất cả các phần phụ thuộc. Điều này bao gồm việc định cấu hình chính xác các nguồn NuGet và sử dụng các tiện ích như vswhere.exe để xác minh cài đặt. Tự động hóa các bước này trong .yml và các tập lệnh PowerShell giúp ngăn ngừa lỗi xây dựng và giữ cho quy trình CI/CD của bạn hoạt động trơn tru, cuối cùng là tiết kiệm thời gian và tài nguyên phát triển.

Các câu hỏi và giải pháp phổ biến để tích hợp bộ công cụ MSVC

  1. Làm cách nào để chỉ định phiên bản Visual Studio trong GitHub Actions?
  2. Sử dụng vs-version: 2019 trong của bạn .yml config để đặt phiên bản Visual Studio mong muốn.
  3. Là gì vswhere.exe và tại sao nó được sử dụng?
  4. vswhere.exe là một tiện ích để xác định vị trí cài đặt Visual Studio, đảm bảo có sẵn các bộ công cụ cần thiết.
  5. Làm cách nào tôi có thể tự động hóa việc cài đặt các thành phần còn thiếu?
  6. Sử dụng Start-Process trong PowerShell để chạy trình cài đặt với các đối số cần thiết cho các cài đặt không cần giám sát.
  7. Tại sao việc định cấu hình nguồn NuGet lại quan trọng?
  8. Việc định cấu hình nguồn NuGet đảm bảo tất cả các phụ thuộc của dự án được giải quyết, điều này rất quan trọng để xây dựng thành công.
  9. Làm cách nào để kiểm tra sự hiện diện của bộ công cụ MSVC141?
  10. Sử dụng vswhere.exe trong tập lệnh để xác minh đường dẫn cài đặt của bộ công cụ MSVC141.
  11. làm gì msbuild-version: 16.x chỉ định?
  12. Nó chỉ định phiên bản MSBuild sẽ được sử dụng, đảm bảo khả năng tương thích với bộ công cụ MSVC141.
  13. Làm cách nào để khôi phục các gói NuGet trong Tác vụ GitHub?
  14. Sử dụng lệnh nuget restore theo sau là tệp giải pháp của bạn, như nuget restore POS.sln.
  15. Mục đích của việc này là gì Setup MSBuild hoạt động?
  16. Nó định cấu hình môi trường để sử dụng MSBuild, cần thiết để xây dựng các dự án .NET trong GitHub Actions.
  17. Làm cách nào tôi có thể tự động đổi tên các tạo phẩm xây dựng?
  18. Sử dụng các lệnh PowerShell như Rename-Item để đổi tên tập tin dựa trên phiên bản xây dựng.
  19. Tại sao bao gồm distribution: 'temurin' trong quá trình thiết lập Java?
  20. Điều này chỉ định bản phân phối JDK sẽ sử dụng, đảm bảo cài đặt đúng phiên bản Java cho dự án của bạn.

Suy nghĩ cuối cùng về việc tích hợp MSVC141

Việc đảm bảo rằng bộ công cụ MSVC141 được đưa vào quy trình làm việc GitHub Actions của bạn là điều cần thiết để duy trì tính ổn định và chức năng của các dự án Visual Studio 2019 của bạn. Bằng cách cập nhật tập lệnh .yml và tự động hóa quá trình cài đặt, bạn có thể ngăn chặn các lỗi xây dựng phổ biến liên quan đến tệp bị thiếu. Cách tiếp cận chủ động này không chỉ tiết kiệm thời gian mà còn nâng cao hiệu quả của quy trình CI/CD, cho phép xây dựng dự án mượt mà và đáng tin cậy hơn.