حل مشكلات MSVC141 في إجراءات GitHub
نحن نعمل على مشروع Visual Studio 2019 الذي بدأ مؤخرًا في طرح الاستثناءات المتعلقة بالملفات المفقودة، وتحديدًا "atlbase.h". يبدو أن هذه المشكلة ترجع إلى غياب مجموعة أدوات MSVC141، والتي لم تكن مطلوبة إلا قبل بضعة أشهر.
في هذه المقالة، سنرشدك حول كيفية تحديث البرامج النصية .yml الخاصة بك في إجراءات GitHub لتضمين مجموعة أدوات MSVC141. ويضمن هذا إنشاء مشروع سلسًا وتجنب الخطأ "لا يمكن فتح ملف التضمين"، مما يساعدك على الحفاظ على الإنتاجية في سير عمل التطوير الخاص بك.
يأمر | وصف |
---|---|
uses: microsoft/setup-msbuild@v1.1 | يقوم بإعداد MSBuild لإجراءات GitHub، مما يسمح ببناء مشاريع .NET. |
vs-version: 2019 | يحدد إصدار Visual Studio المراد استخدامه، مما يضمن التوافق مع مجموعة أدوات MSVC141. |
msbuild-version: 16.x | يحدد إصدار MSBuild، بما يتماشى مع مجموعة أدوات MSVC141 المطلوبة للتجميع. |
extenda/actions/setup-nuget-sources@v0 | تكوين مصادر NuGet في إجراءات GitHub، الضرورية لاستعادة تبعيات المشروع. |
nuget restore POS.sln | يستعيد حزم NuGet للحل المحدد، ويحل جميع التبعيات قبل الإنشاء. |
Copy-Item | نسخ الملفات من موقع إلى آخر في PowerShell، المستخدم هنا للتعامل مع قوالب قاعدة البيانات. |
Start-Process | يبدأ عملية جديدة في PowerShell، وهي مفيدة لتشغيل أدوات التثبيت أو الملفات التنفيذية الأخرى. |
vswhere.exe | أداة مساعدة لتحديد موقع تثبيتات Visual Studio، تُستخدم للتحقق من وجود MSVC141. |
دمج مجموعة أدوات MSVC141 في إجراءات GitHub
تضمن البرامج النصية المتوفرة أعلاه تضمين مجموعة أدوات MSVC141 في سير عمل GitHub Actions. يقوم البرنامج النصي الأول بتحديث ملف تكوين YAML ليشمل الخطوات اللازمة لإعداد الأدوات والبيئات المطلوبة. يتضمن ذلك إعداد MSBuild باستخدام microsoft/setup-msbuild@v1.1، مع تحديد إصدار Visual Studio مع vs-version: 2019، والتأكد من msbuild-version: 16.x يستخدم. تتأكد هذه الخطوات من تكوين بيئة البناء بشكل صحيح لاستخدام MSVC141.
بالإضافة إلى ذلك، يتحقق البرنامج النصي PowerShell من وجود مجموعة أدوات MSVC141 باستخدام vswhere.exe. إذا لم يتم العثور عليه، يبدأ البرنامج النصي عملية التثبيت عن طريق التشغيل Start-Process مع الوسائط اللازمة لتثبيت المكونات المفقودة. يضمن هذا النهج الآلي توفر مجموعة الأدوات المطلوبة، مما يمنع حدوث ذلك fatal error C1083 المتعلقة بالمفقودين تتضمن ملفات مثل 'atlbase.h'. باتباع هذه الخطوات، يمكنك الحفاظ على عملية إنشاء مستقرة ومتسقة لمشاريع Visual Studio 2019 الخاصة بك في GitHub Actions.
قم بتحديث البرنامج النصي .yml ليشمل مجموعة أدوات MSVC141
تكوين إجراءات 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\*
تأكد من صحة مجموعة أدوات MSVC في إجراءات GitHub
البرنامج النصي PowerShell لفحص وتثبيت 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
ضمان التوافق مع مجموعات أدوات MSVC في إجراءات GitHub
يعد الحفاظ على التوافق مع مجموعات الأدوات المختلفة في بيئة التكامل المستمر (CI) مثل GitHub Actions أمرًا ضروريًا لضمان عمليات إنشاء متسقة وتقليل الأخطاء. أحد الجوانب الرئيسية هو الحفاظ على تحديث ملفات التكوين الخاصة بك باستخدام الأدوات والتبعيات الضرورية. في حالة MSVC141، من المهم أن نفهم أن مجموعة الأدوات هذه ضرورية لبعض المشاريع، خاصة تلك التي تعتمد على مكتبات ومكونات C++ الأقدم.
لا يتضمن تضمين مجموعة أدوات MSVC141 في إعداد GitHub Actions تحديد إصدار Visual Studio الصحيح فحسب، بل يضمن أيضًا حل جميع التبعيات. يتضمن ذلك تكوين مصادر NuGet بشكل صحيح واستخدام الأدوات المساعدة مثل vswhere.exe للتحقق من المنشآت. أتمتة هذه الخطوات داخل الخاص بك .yml وتساعد البرامج النصية PowerShell على منع فشل البناء وتحافظ على تشغيل خط أنابيب CI/CD بسلاسة، مما يؤدي في النهاية إلى توفير وقت التطوير والموارد.
الأسئلة والحلول الشائعة لدمج مجموعات أدوات MSVC
- كيف أحدد إصدار Visual Studio في إجراءات GitHub؟
- يستخدم vs-version: 2019 في الخاص بك .yml التكوين لتعيين إصدار Visual Studio المطلوب.
- ما هو vswhere.exe ولماذا يتم استخدامه؟
- vswhere.exe هي أداة مساعدة لتحديد موقع عمليات تثبيت Visual Studio، مما يضمن توفر مجموعات الأدوات المطلوبة.
- كيف يمكنني أتمتة عملية تثبيت المكونات المفقودة؟
- يستخدم Start-Process في PowerShell لتشغيل برنامج التثبيت باستخدام الوسائط اللازمة لعمليات التثبيت غير المراقبة.
- لماذا من المهم تكوين مصادر NuGet؟
- يضمن تكوين مصادر NuGet حل جميع تبعيات المشروع، وهو أمر بالغ الأهمية للبنيات الناجحة.
- كيف يمكنني التحقق من وجود مجموعة أدوات MSVC141؟
- يستخدم vswhere.exe في برنامج نصي للتحقق من مسار تثبيت مجموعة أدوات MSVC141.
- ماذا فعلت msbuild-version: 16.x تحديد؟
- وهو يحدد إصدار MSBuild الذي سيتم استخدامه، مما يضمن التوافق مع مجموعة أدوات MSVC141.
- كيف يمكنني استعادة حزم NuGet في إجراءات GitHub؟
- استخدم الأمر nuget restore متبوعًا بملف الحل الخاص بك، مثل nuget restore POS.sln.
- ما هو الغرض من Setup MSBuild فعل؟
- يقوم بتكوين البيئة لاستخدام MSBuild، الضروري لبناء مشاريع .NET في إجراءات GitHub.
- كيف يمكنني إعادة تسمية عناصر البناء تلقائيًا؟
- استخدم أوامر PowerShell مثل Rename-Item لإعادة تسمية الملفات بناءً على إصدار البناء.
- لماذا تشمل distribution: 'temurin' في إعداد جافا؟
- يحدد هذا توزيع JDK الذي سيتم استخدامه، مما يضمن تثبيت إصدار Java الصحيح لمشروعك.
الأفكار النهائية حول دمج MSVC141
يعد التأكد من تضمين مجموعة أدوات MSVC141 في سير عمل GitHub Actions أمرًا ضروريًا للحفاظ على استقرار ووظائف مشاريع Visual Studio 2019 الخاصة بك. من خلال تحديث البرامج النصية .yml الخاصة بك وأتمتة عملية التثبيت، يمكنك منع أخطاء البناء الشائعة المتعلقة بالملفات المفقودة. لا يوفر هذا النهج الاستباقي الوقت فحسب، بل يعزز أيضًا كفاءة خط أنابيب CI/CD لديك، مما يسمح بإنشاء مشروع أكثر سلاسة وموثوقية.