GitHub'da MSVC141 için .yml Komut Dosyalarını Güncelleme Kılavuzu

GitHub'da MSVC141 için .yml Komut Dosyalarını Güncelleme Kılavuzu
GitHub'da MSVC141 için .yml Komut Dosyalarını Güncelleme Kılavuzu

GitHub Eylemlerinde MSVC141 Sorunlarını Çözme

Yakın zamanda eksik dosyalarla (özellikle 'atlbase.h') ilgili istisnalar atmaya başlayan bir Visual Studio 2019 projesi üzerinde çalışıyoruz. Bu sorunun, birkaç ay öncesine kadar gerekli olmayan MSVC141 araç setinin bulunmamasından kaynaklandığı görülüyor.

Bu makalede, GitHub Actions'daki .yml komut dosyalarınızı MSVC141 araç setini içerecek şekilde nasıl güncelleyeceğiniz konusunda size rehberlik edeceğiz. Bu, projenin sorunsuz bir şekilde oluşturulmasını sağlar ve 'dahil edilen dosya açılamıyor' hatasını önleyerek geliştirme iş akışınızda üretkenliği korumanıza yardımcı olur.

Emretmek Tanım
uses: microsoft/setup-msbuild@v1.1 GitHub Eylemleri için MSBuild'i kurarak .NET projelerinin oluşturulmasına olanak tanır.
vs-version: 2019 MSVC141 araç seti ile uyumluluğu sağlayarak kullanılacak Visual Studio sürümünü belirtir.
msbuild-version: 16.x Derleme için gerekli MSVC141 araç setiyle uyumlu olarak MSBuild sürümünü tanımlar.
extenda/actions/setup-nuget-sources@v0 Proje bağımlılıklarını geri yüklemek için gerekli olan GitHub Eylemlerindeki NuGet kaynaklarını yapılandırır.
nuget restore POS.sln Belirtilen çözüm için NuGet paketlerini geri yükleyerek derlemeden önce tüm bağımlılıkları çözer.
Copy-Item Burada veritabanı şablonlarını işlemek için kullanılan PowerShell'de dosyaları bir konumdan diğerine kopyalar.
Start-Process PowerShell'de yükleyicileri veya diğer yürütülebilir dosyaları çalıştırmak için yararlı olan yeni bir işlem başlatır.
vswhere.exe MSVC141'in varlığını kontrol etmek için kullanılan, Visual Studio kurulumlarını bulmaya yönelik bir yardımcı program.

MSVC141 Araç Setini GitHub Eylemlerine Entegre Etme

Yukarıda sağlanan komut dosyaları, MSVC141 araç setinin GitHub Eylemleri iş akışınıza dahil edilmesini sağlar. İlk komut dosyası, gerekli araçları ve ortamları ayarlamak için gerekli adımları içerecek şekilde YAML yapılandırma dosyasını günceller. Bu, MSBuild'in aşağıdakileri kullanarak kurulmasını içerir: microsoft/setup-msbuild@v1.1ile Visual Studio sürümünü belirterek vs-version: 2019ve bunun sağlanması msbuild-version: 16.x kullanıldı. Bu adımlar, derleme ortamının MSVC141'i kullanacak şekilde doğru şekilde yapılandırıldığından emin olmanızı sağlar.

Ayrıca PowerShell betiği, MSVC141 araç setinin varlığını aşağıdakileri kullanarak denetler: vswhere.exe. Bulunamazsa, komut dosyası çalıştırarak yükleme işlemini başlatır. Start-Process eksik bileşenleri yüklemek için gerekli argümanlarla. Bu otomatikleştirilmiş yaklaşım, gerekli araç setinin mevcut olmasını sağlayarak, fatal error C1083 eksiklerle ilgili 'atlbase.h' gibi dosyalar bulunur. Bu adımları izleyerek GitHub Eylemlerinde Visual Studio 2019 projeleriniz için istikrarlı ve tutarlı bir derleme süreci sağlayabilirsiniz.

.yml Komut Dosyasını MSVC141 Araç Setini İçerecek Şekilde Güncelleyin

GitHub Eylemleri YAML Yapılandırması

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 Eylemlerinde Doğru MSVC Araç Setinin Doğru Olduğundan Emin Olun

MSVC141'i Kontrol Etmek ve Yüklemek için PowerShell Komut Dosyası

$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 Eylemlerinde MSVC Araç Setleriyle Uyumluluğun Sağlanması

GitHub Actions gibi sürekli entegrasyon (CI) ortamında çeşitli araç setleriyle uyumluluğu sürdürmek, tutarlı derlemeler sağlamak ve hataları en aza indirmek için çok önemlidir. Önemli yönlerden biri, yapılandırma dosyalarınızı gerekli araçlar ve bağımlılıklarla güncel tutmaktır. MSVC141 söz konusu olduğunda, bu araç setinin belirli projeler için, özellikle de eski C++ kitaplıkları ve bileşenlerine dayananlar için gerekli olduğunu anlamak önemlidir.

MSVC141 araç setini GitHub Actions kurulumunuza dahil etmek yalnızca doğru Visual Studio sürümünü belirtmeyi değil aynı zamanda tüm bağımlılıkların çözülmesini de içerir. Buna NuGet kaynaklarının doğru şekilde yapılandırılması ve aşağıdaki gibi yardımcı programların kullanılması da dahildir: vswhere.exe Kurulumları doğrulamak için. Bu adımları kendi bünyenizde otomatikleştirmek .yml ve PowerShell betikleri derleme hatalarını önlemeye yardımcı olur ve CI/CD işlem hattınızın sorunsuz çalışmasını sağlayarak sonuçta geliştirme süresinden ve kaynaklardan tasarruf sağlar.

MSVC Araç Setlerini Entegrasyona İlişkin Sık Sorulan Sorular ve Çözümler

  1. GitHub Eylemlerinde Visual Studio sürümünü nasıl belirlerim?
  2. Kullanmak vs-version: 2019 senin içinde .yml İstenilen Visual Studio sürümünü ayarlamak için yapılandırma.
  3. Nedir vswhere.exe ve neden kullanılıyor?
  4. vswhere.exe gerekli araç setlerinin kullanılabilir olmasını sağlayarak Visual Studio kurulumlarını bulmaya yönelik bir yardımcı programdır.
  5. Eksik bileşenlerin kurulumunu nasıl otomatikleştirebilirim?
  6. Kullanmak Start-Process Katılımsız kurulumlar için yükleyiciyi gerekli bağımsız değişkenlerle çalıştırmak için PowerShell'de.
  7. NuGet kaynaklarını yapılandırmak neden önemlidir?
  8. NuGet kaynaklarının yapılandırılması, başarılı derlemeler için çok önemli olan tüm proje bağımlılıklarının çözülmesini sağlar.
  9. MSVC141 araç setinin varlığını nasıl kontrol edebilirim?
  10. Kullanmak vswhere.exe MSVC141 araç setinin kurulum yolunu doğrulamak için bir komut dosyasında.
  11. Nedir msbuild-version: 16.x Belirtmek mi istiyorsunuz?
  12. Kullanılacak MSBuild sürümünü belirtir ve MSVC141 araç seti ile uyumluluğu sağlar.
  13. GitHub Eylemlerinde NuGet paketlerini nasıl geri yüklerim?
  14. Komutu kullanın nuget restore ardından çözüm dosyanızı takip edin, örneğin nuget restore POS.sln.
  15. Amacı nedir? Setup MSBuild aksiyon?
  16. Ortamı, GitHub Eylemlerinde .NET projeleri oluşturmak için gerekli olan MSBuild'i kullanacak şekilde yapılandırır.
  17. Derleme yapıtlarını otomatik olarak nasıl yeniden adlandırabilirim?
  18. Gibi PowerShell komutlarını kullanın Rename-Item derleme sürümüne göre dosyaları yeniden adlandırmak için.
  19. Neden dahil edilmeli? distribution: 'temurin' Java kurulumunda mı?
  20. Bu, kullanılacak JDK dağıtımını belirterek projeniz için doğru Java sürümünün kurulu olmasını sağlar.

MSVC141'in Entegrasyonu Hakkında Son Düşünceler

MSVC141 araç setinin GitHub Actions iş akışınıza dahil edildiğinden emin olmak, Visual Studio 2019 projelerinizin kararlılığını ve işlevselliğini korumak için çok önemlidir. .yml komut dosyalarınızı güncelleyerek ve yükleme sürecini otomatikleştirerek, eksik dosyalarla ilgili yaygın derleme hatalarını önleyebilirsiniz. Bu proaktif yaklaşım yalnızca zamandan tasarruf sağlamakla kalmaz, aynı zamanda CI/CD işlem hattınızın verimliliğini de artırarak daha sorunsuz ve daha güvenilir proje oluşturma olanağı sağlar.