دليل لتحديث البرامج النصية .yml لـ MSVC141 في GitHub

دليل لتحديث البرامج النصية .yml لـ MSVC141 في GitHub
دليل لتحديث البرامج النصية .yml لـ MSVC141 في GitHub

حل مشكلات 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

  1. كيف أحدد إصدار Visual Studio في إجراءات GitHub؟
  2. يستخدم vs-version: 2019 في الخاص بك .yml التكوين لتعيين إصدار Visual Studio المطلوب.
  3. ما هو vswhere.exe ولماذا يتم استخدامه؟
  4. vswhere.exe هي أداة مساعدة لتحديد موقع عمليات تثبيت Visual Studio، مما يضمن توفر مجموعات الأدوات المطلوبة.
  5. كيف يمكنني أتمتة عملية تثبيت المكونات المفقودة؟
  6. يستخدم Start-Process في PowerShell لتشغيل برنامج التثبيت باستخدام الوسائط اللازمة لعمليات التثبيت غير المراقبة.
  7. لماذا من المهم تكوين مصادر NuGet؟
  8. يضمن تكوين مصادر NuGet حل جميع تبعيات المشروع، وهو أمر بالغ الأهمية للبنيات الناجحة.
  9. كيف يمكنني التحقق من وجود مجموعة أدوات MSVC141؟
  10. يستخدم vswhere.exe في برنامج نصي للتحقق من مسار تثبيت مجموعة أدوات MSVC141.
  11. ماذا فعلت msbuild-version: 16.x تحديد؟
  12. وهو يحدد إصدار MSBuild الذي سيتم استخدامه، مما يضمن التوافق مع مجموعة أدوات MSVC141.
  13. كيف يمكنني استعادة حزم NuGet في إجراءات GitHub؟
  14. استخدم الأمر nuget restore متبوعًا بملف الحل الخاص بك، مثل nuget restore POS.sln.
  15. ما هو الغرض من Setup MSBuild فعل؟
  16. يقوم بتكوين البيئة لاستخدام MSBuild، الضروري لبناء مشاريع .NET في إجراءات GitHub.
  17. كيف يمكنني إعادة تسمية عناصر البناء تلقائيًا؟
  18. استخدم أوامر PowerShell مثل Rename-Item لإعادة تسمية الملفات بناءً على إصدار البناء.
  19. لماذا تشمل distribution: 'temurin' في إعداد جافا؟
  20. يحدد هذا توزيع JDK الذي سيتم استخدامه، مما يضمن تثبيت إصدار Java الصحيح لمشروعك.

الأفكار النهائية حول دمج MSVC141

يعد التأكد من تضمين مجموعة أدوات MSVC141 في سير عمل GitHub Actions أمرًا ضروريًا للحفاظ على استقرار ووظائف مشاريع Visual Studio 2019 الخاصة بك. من خلال تحديث البرامج النصية .yml الخاصة بك وأتمتة عملية التثبيت، يمكنك منع أخطاء البناء الشائعة المتعلقة بالملفات المفقودة. لا يوفر هذا النهج الاستباقي الوقت فحسب، بل يعزز أيضًا كفاءة خط أنابيب CI/CD لديك، مما يسمح بإنشاء مشروع أكثر سلاسة وموثوقية.