GitHub에서 MSVC141용 .yml 스크립트 업데이트 가이드

GitHub에서 MSVC141용 .yml 스크립트 업데이트 가이드
GitHub에서 MSVC141용 .yml 스크립트 업데이트 가이드

GitHub Actions에서 MSVC141 문제 해결

최근 누락된 파일, 특히 'atlbase.h'와 관련된 예외가 발생하기 시작한 Visual Studio 2019 프로젝트를 작업 중입니다. 이 문제는 몇 달 전까지만 해도 필요하지 않았던 MSVC141 도구 세트가 없기 때문에 발생하는 것으로 보입니다.

이 문서에서는 MSVC141 도구 세트를 포함하도록 GitHub Actions의 .yml 스크립트를 업데이트하는 방법을 안내합니다. 이는 원활한 프로젝트 빌드를 보장하고 '포함 파일을 열 수 없음' 오류를 방지하여 개발 작업 흐름에서 생산성을 유지하는 데 도움이 됩니다.

명령 설명
uses: microsoft/setup-msbuild@v1.1 GitHub Actions용 ​​MSBuild를 설정하여 .NET 프로젝트 빌드를 허용합니다.
vs-version: 2019 사용할 Visual Studio 버전을 지정하여 MSVC141 도구 집합과의 호환성을 보장합니다.
msbuild-version: 16.x 컴파일에 필요한 MSVC141 도구 세트에 맞춰 MSBuild 버전을 정의합니다.
extenda/actions/setup-nuget-sources@v0 프로젝트 종속성을 복원하는 데 필수적인 GitHub Actions에서 NuGet 소스를 구성합니다.
nuget restore POS.sln 지정된 솔루션에 대한 NuGet 패키지를 복원하여 빌드하기 전에 모든 종속성을 확인합니다.
Copy-Item 데이터베이스 템플릿을 처리하기 위해 여기에서 사용되는 PowerShell의 한 위치에서 다른 위치로 파일을 복사합니다.
Start-Process 설치 프로그램이나 기타 실행 파일을 실행하는 데 유용한 PowerShell에서 새 프로세스를 시작합니다.
vswhere.exe MSVC141이 있는지 확인하는 데 사용되는 Visual Studio 설치를 찾는 유틸리티입니다.

GitHub Actions에 MSVC141 도구 세트 통합

위에 제공된 스크립트는 MSVC141 도구 세트가 GitHub Actions 워크플로에 포함되어 있는지 확인합니다. 첫 번째 스크립트는 필요한 도구와 환경을 설정하는 데 필요한 단계를 포함하도록 YAML 구성 파일을 업데이트합니다. 여기에는 다음을 사용하여 MSBuild를 설정하는 것이 포함됩니다. microsoft/setup-msbuild@v1.1, Visual Studio 버전 지정 vs-version: 2019, 그리고 msbuild-version: 16.x 사용. 이러한 단계를 통해 빌드 환경이 MSVC141을 사용하도록 올바르게 구성되었는지 확인합니다.

또한 PowerShell 스크립트는 다음을 사용하여 MSVC141 도구 집합이 있는지 확인합니다. . 찾을 수 없는 경우 스크립트는 다음을 실행하여 설치 프로세스를 시작합니다. Start-Process 누락된 구성 요소를 설치하는 데 필요한 인수를 사용합니다. 이러한 자동화된 접근 방식은 필요한 도구 세트를 사용할 수 있도록 보장하여 fatal error C1083 'atlbase.h'와 같은 포함 파일 누락과 관련이 있습니다. 다음 단계를 수행하면 GitHub Actions에서 Visual Studio 2019 프로젝트에 대한 안정적이고 일관된 빌드 프로세스를 유지할 수 있습니다.

MSVC141 도구 세트를 포함하도록 .yml 스크립트 업데이트

GitHub 작업 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\*

GitHub Actions에서 올바른 MSVC 도구 세트를 확인하세요.

MSVC141 확인 및 설치를 위한 PowerShell 스크립트

$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

GitHub Actions에서 MSVC 도구 세트와의 호환성 보장

GitHub Actions와 같은 CI(지속적 통합) 환경에서 다양한 도구 세트와의 호환성을 유지하는 것은 일관된 빌드를 보장하고 오류를 최소화하는 데 중요합니다. 한 가지 중요한 측면은 필요한 도구와 종속성을 사용하여 구성 파일을 최신 상태로 유지하는 것입니다. MSVC141의 경우 이 도구 세트는 특정 프로젝트, 특히 이전 C++ 라이브러리 및 구성 요소를 사용하는 프로젝트에 필수적이라는 점을 이해하는 것이 중요합니다.

GitHub Actions 설정에 MSVC141 도구 세트를 포함시키는 것은 올바른 Visual Studio 버전을 지정하는 것뿐만 아니라 모든 종속성을 해결하는 것도 포함합니다. 여기에는 NuGet 소스를 올바르게 구성하고 다음과 같은 유틸리티를 사용하는 것이 포함됩니다. 설치를 확인합니다. 내에서 이러한 단계를 자동화하면 .yml PowerShell 스크립트는 빌드 실패를 방지하고 CI/CD 파이프라인이 원활하게 실행되도록 유지하여 궁극적으로 개발 시간과 리소스를 절약하는 데 도움이 됩니다.

MSVC 도구 세트 통합에 대한 일반적인 질문 및 솔루션

  1. GitHub Actions에서 Visual Studio 버전을 어떻게 지정하나요?
  2. 사용 vs-version: 2019 당신의 .yml 원하는 Visual Studio 버전을 설정하기 위한 구성입니다.
  3. 무엇인가요 왜 사용됩니까?
  4. Visual Studio 설치를 찾아 필요한 도구 집합을 사용할 수 있도록 하는 유틸리티입니다.
  5. 누락된 구성요소 설치를 자동화하려면 어떻게 해야 합니까?
  6. 사용 Start-Process 무인 설치에 필요한 인수를 사용하여 설치 프로그램을 실행하려면 PowerShell에서
  7. NuGet 소스를 구성하는 것이 왜 중요한가요?
  8. NuGet 소스를 구성하면 모든 프로젝트 종속성이 해결되며 이는 성공적인 빌드에 중요합니다.
  9. MSVC141 도구 세트가 있는지 어떻게 확인합니까?
  10. 사용 MSVC141 도구 세트의 설치 경로를 확인하는 스크립트에서.
  11. 무엇을 msbuild-version: 16.x 지정?
  12. 사용할 MSBuild 버전을 지정하여 MSVC141 도구 세트와의 호환성을 보장합니다.
  13. GitHub Actions에서 NuGet 패키지를 복원하려면 어떻게 해야 하나요?
  14. 명령을 사용하십시오 nuget restore 다음과 같은 솔루션 파일이 옵니다. nuget restore POS.sln.
  15. 의 목적은 무엇입니까? Setup MSBuild 행동?
  16. GitHub Actions에서 .NET 프로젝트를 빌드하는 데 필요한 MSBuild를 사용하도록 환경을 구성합니다.
  17. 빌드 아티팩트의 이름을 자동으로 바꾸려면 어떻게 해야 합니까?
  18. 다음과 같은 PowerShell 명령을 사용하십시오. Rename-Item 빌드 버전에 따라 파일 이름을 바꿉니다.
  19. 포함하는 이유 distribution: 'temurin' Java 설정에서?
  20. 사용할 JDK 배포판을 지정하여 프로젝트에 올바른 Java 버전이 설치되었는지 확인합니다.

MSVC141 통합에 대한 최종 생각

Visual Studio 2019 프로젝트의 안정성과 기능을 유지하려면 GitHub Actions 워크플로에 MSVC141 도구 집합이 포함되어 있는지 확인하는 것이 중요합니다. .yml 스크립트를 업데이트하고 설치 프로세스를 자동화하면 누락된 파일과 관련된 일반적인 빌드 오류를 방지할 수 있습니다. 이러한 사전 예방적 접근 방식은 시간을 절약할 뿐만 아니라 CI/CD 파이프라인의 효율성을 향상시켜 보다 원활하고 안정적인 프로젝트 빌드를 가능하게 합니다.