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
- GitHub Eylemlerinde Visual Studio sürümünü nasıl belirlerim?
- Kullanmak vs-version: 2019 senin içinde .yml İstenilen Visual Studio sürümünü ayarlamak için yapılandırma.
- Nedir vswhere.exe ve neden kullanılıyor?
- vswhere.exe gerekli araç setlerinin kullanılabilir olmasını sağlayarak Visual Studio kurulumlarını bulmaya yönelik bir yardımcı programdır.
- Eksik bileşenlerin kurulumunu nasıl otomatikleştirebilirim?
- 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.
- NuGet kaynaklarını yapılandırmak neden önemlidir?
- 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.
- MSVC141 araç setinin varlığını nasıl kontrol edebilirim?
- Kullanmak vswhere.exe MSVC141 araç setinin kurulum yolunu doğrulamak için bir komut dosyasında.
- Nedir msbuild-version: 16.x Belirtmek mi istiyorsunuz?
- Kullanılacak MSBuild sürümünü belirtir ve MSVC141 araç seti ile uyumluluğu sağlar.
- GitHub Eylemlerinde NuGet paketlerini nasıl geri yüklerim?
- Komutu kullanın nuget restore ardından çözüm dosyanızı takip edin, örneğin nuget restore POS.sln.
- Amacı nedir? Setup MSBuild aksiyon?
- Ortamı, GitHub Eylemlerinde .NET projeleri oluşturmak için gerekli olan MSBuild'i kullanacak şekilde yapılandırır.
- Derleme yapıtlarını otomatik olarak nasıl yeniden adlandırabilirim?
- Gibi PowerShell komutlarını kullanın Rename-Item derleme sürümüne göre dosyaları yeniden adlandırmak için.
- Neden dahil edilmeli? distribution: 'temurin' Java kurulumunda mı?
- 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.