GitHub-এ MSVC141-এর জন্য .yml স্ক্রিপ্ট আপডেট করার নির্দেশিকা

GitHub-এ MSVC141-এর জন্য .yml স্ক্রিপ্ট আপডেট করার নির্দেশিকা
GitHub-এ MSVC141-এর জন্য .yml স্ক্রিপ্ট আপডেট করার নির্দেশিকা

GitHub অ্যাকশনে MSVC141 সমস্যার সমাধান করা

আমরা একটি ভিজ্যুয়াল স্টুডিও 2019 প্রকল্পে কাজ করছি যা সম্প্রতি অনুপস্থিত ফাইলগুলির সাথে সম্পর্কিত ব্যতিক্রমগুলি নিক্ষেপ করা শুরু করেছে, বিশেষ করে 'atlbase.h'৷ এই সমস্যাটি MSVC141 টুলসেটের অনুপস্থিতির কারণে বলে মনে হচ্ছে, যা কয়েক মাস আগে পর্যন্ত প্রয়োজন ছিল না।

এই নিবন্ধে, আমরা আপনাকে গাইড করব কিভাবে MSVC141 টুলসেট অন্তর্ভুক্ত করতে GitHub অ্যাকশনে আপনার .yml স্ক্রিপ্টগুলি আপডেট করবেন। এটি মসৃণ প্রকল্প তৈরি নিশ্চিত করে এবং 'ফাইল অন্তর্ভুক্ত খুলতে পারে না' ত্রুটি এড়ায়, যা আপনাকে আপনার উন্নয়ন কর্মপ্রবাহে উত্পাদনশীলতা বজায় রাখতে সহায়তা করে।

আদেশ বর্ণনা
uses: microsoft/setup-msbuild@v1.1 GitHub অ্যাকশনগুলির জন্য MSBuild সেট আপ করে, যা .NET প্রকল্পগুলি তৈরি করার অনুমতি দেয়।
vs-version: 2019 MSVC141 টুলসেটের সাথে সামঞ্জস্যতা নিশ্চিত করে ব্যবহার করার জন্য ভিজ্যুয়াল স্টুডিওর সংস্করণ নির্দিষ্ট করে।
msbuild-version: 16.x সংকলনের জন্য প্রয়োজনীয় MSVC141 টুলসেটের সাথে সারিবদ্ধ করে MSBuild সংস্করণকে সংজ্ঞায়িত করে।
extenda/actions/setup-nuget-sources@v0 গিটহাব অ্যাকশনগুলিতে NuGet উত্স কনফিগার করে, প্রকল্প নির্ভরতা পুনরুদ্ধারের জন্য প্রয়োজনীয়।
nuget restore POS.sln নির্দিষ্ট সমাধানের জন্য NuGet প্যাকেজ পুনরুদ্ধার করে, নির্মাণের আগে সমস্ত নির্ভরতা সমাধান করে।
Copy-Item PowerShell-এ এক অবস্থান থেকে অন্য স্থানে ফাইল কপি করে, এখানে ডাটাবেস টেমপ্লেট পরিচালনার জন্য ব্যবহৃত হয়।
Start-Process PowerShell-এ একটি নতুন প্রক্রিয়া শুরু করে, যা ইনস্টলার বা অন্যান্য এক্সিকিউটেবল চালানোর জন্য উপযোগী।
vswhere.exe ভিজ্যুয়াল স্টুডিও ইনস্টলেশন সনাক্ত করার জন্য একটি ইউটিলিটি, যা MSVC141-এর উপস্থিতি পরীক্ষা করতে ব্যবহৃত হয়।

GitHub অ্যাকশনে MSVC141 টুলসেট সংহত করা

উপরে প্রদত্ত স্ক্রিপ্টগুলি নিশ্চিত করে যে MSVC141 টুলসেট আপনার GitHub অ্যাকশন ওয়ার্কফ্লোতে অন্তর্ভুক্ত রয়েছে। প্রথম স্ক্রিপ্ট YAML কনফিগারেশন ফাইল আপডেট করে প্রয়োজনীয় সরঞ্জাম এবং পরিবেশ সেট আপ করার জন্য প্রয়োজনীয় পদক্ষেপগুলি অন্তর্ভুক্ত করতে। এর মধ্যে MSBuild ব্যবহার করে সেট আপ করা অন্তর্ভুক্ত microsoft/setup-msbuild@v1.1, এর সাথে ভিজ্যুয়াল স্টুডিও সংস্করণ উল্লেখ করা vs-version: 2019, এবং নিশ্চিত করা যে msbuild-version: 16.x ব্যবহৃত হয়. এই পদক্ষেপগুলি নিশ্চিত করে যে বিল্ড এনভায়রনমেন্ট সঠিকভাবে MSVC141 ব্যবহার করার জন্য কনফিগার করা হয়েছে।

উপরন্তু, PowerShell স্ক্রিপ্ট ব্যবহার করে MSVC141 টুলসেটের উপস্থিতি পরীক্ষা করে vswhere.exe. যদি এটি পাওয়া না যায়, স্ক্রিপ্টটি চালানোর মাধ্যমে ইনস্টলেশন প্রক্রিয়া শুরু করে Start-Process অনুপস্থিত উপাদানগুলি ইনস্টল করার জন্য প্রয়োজনীয় আর্গুমেন্ট সহ। এই স্বয়ংক্রিয় পদ্ধতি নিশ্চিত করে যে প্রয়োজনীয় টুলসেট উপলব্ধ, প্রতিরোধ করে fatal error C1083 অনুপস্থিত সম্পর্কিত 'atlbase.h' এর মতো ফাইলগুলি অন্তর্ভুক্ত করে। এই পদক্ষেপগুলি অনুসরণ করে, আপনি গিটহাব অ্যাকশনগুলিতে আপনার ভিজ্যুয়াল স্টুডিও 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 অ্যাকশনে সঠিক MSVC টুলসেট নিশ্চিত করুন

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

GitHub অ্যাকশনে MSVC টুলসেটের সাথে সামঞ্জস্যতা নিশ্চিত করা

গিটহাব অ্যাকশনগুলির মতো একটি অবিচ্ছিন্ন ইন্টিগ্রেশন (CI) পরিবেশে বিভিন্ন টুলসেটের সাথে সামঞ্জস্য বজায় রাখা সামঞ্জস্যপূর্ণ বিল্ড নিশ্চিত করতে এবং ত্রুটিগুলি হ্রাস করার জন্য অত্যন্ত গুরুত্বপূর্ণ। একটি মূল দিক হল আপনার কনফিগারেশন ফাইলগুলিকে প্রয়োজনীয় সরঞ্জাম এবং নির্ভরতা সহ আপ টু ডেট রাখা। MSVC141-এর ক্ষেত্রে, এটা বোঝা গুরুত্বপূর্ণ যে এই টুলসেটটি নির্দিষ্ট কিছু প্রকল্পের জন্য অপরিহার্য, বিশেষ করে যারা পুরানো C++ লাইব্রেরি এবং উপাদানগুলির উপর নির্ভর করে।

আপনার GitHub অ্যাকশন সেটআপে MSVC141 টুলসেটটি অন্তর্ভুক্ত করার সাথে শুধুমাত্র সঠিক ভিজ্যুয়াল স্টুডিও সংস্করণ নির্দিষ্ট করা নয়, সমস্ত নির্ভরতা সমাধান করা নিশ্চিত করাও জড়িত। এর মধ্যে রয়েছে NuGet উত্সগুলি সঠিকভাবে কনফিগার করা এবং এর মতো ইউটিলিটিগুলি ব্যবহার করা৷ vswhere.exe ইনস্টলেশন যাচাই করতে। আপনার মধ্যে এই পদক্ষেপ স্বয়ংক্রিয় .yml এবং পাওয়ারশেল স্ক্রিপ্টগুলি বিল্ড ব্যর্থতা রোধ করতে সাহায্য করে এবং আপনার CI/CD পাইপলাইনকে মসৃণভাবে চলতে দেয়, শেষ পর্যন্ত বিকাশের সময় এবং সংস্থানগুলি সাশ্রয় করে।

MSVC টুলসেট একত্রিত করার জন্য সাধারণ প্রশ্ন এবং সমাধান

  1. আমি কিভাবে GitHub অ্যাকশনে ভিজ্যুয়াল স্টুডিও সংস্করণ নির্দিষ্ট করব?
  2. ব্যবহার করুন vs-version: 2019 আপনার মধ্যে .yml পছন্দসই ভিজ্যুয়াল স্টুডিও সংস্করণ সেট করতে কনফিগারেশন।
  3. কি vswhere.exe এবং কেন এটি ব্যবহার করা হয়?
  4. vswhere.exe ভিজ্যুয়াল স্টুডিও ইনস্টলেশনগুলি সনাক্ত করার একটি ইউটিলিটি, প্রয়োজনীয় টুলসেটগুলি উপলব্ধ রয়েছে তা নিশ্চিত করে৷
  5. আমি কিভাবে অনুপস্থিত উপাদানগুলির ইনস্টলেশন স্বয়ংক্রিয় করতে পারি?
  6. ব্যবহার করুন Start-Process পাওয়ারশেলে অনুপযুক্ত ইনস্টলেশনের জন্য প্রয়োজনীয় আর্গুমেন্ট সহ ইনস্টলার চালানোর জন্য।
  7. কেন NuGet উত্স কনফিগার করা গুরুত্বপূর্ণ?
  8. NuGet উত্স কনফিগার করা নিশ্চিত করে যে সমস্ত প্রকল্প নির্ভরতা সমাধান করা হয়েছে, যা সফল বিল্ডগুলির জন্য অত্যন্ত গুরুত্বপূর্ণ।
  9. আমি কিভাবে MSVC141 টুলসেটের উপস্থিতি পরীক্ষা করব?
  10. ব্যবহার করুন vswhere.exe MSVC141 টুলসেটের ইনস্টলেশন পাথ যাচাই করার জন্য একটি স্ক্রিপ্টে।
  11. কি করে msbuild-version: 16.x উল্লেখ?
  12. এটি MSVC141 টুলসেটের সাথে সামঞ্জস্যতা নিশ্চিত করে MSBuild সংস্করণটি ব্যবহার করার জন্য নির্দিষ্ট করে।
  13. গিটহাব অ্যাকশনগুলিতে আমি কীভাবে নুগেট প্যাকেজগুলি পুনরুদ্ধার করব?
  14. কমান্ড ব্যবহার করুন nuget restore আপনার সমাধান ফাইল দ্বারা অনুসরণ, মত nuget restore POS.sln.
  15. এর উদ্দেশ্য কি Setup MSBuild কর্ম?
  16. এটি GitHub অ্যাকশনে .NET প্রজেক্ট তৈরির জন্য প্রয়োজনীয় MSBuild ব্যবহার করার জন্য পরিবেশ কনফিগার করে।
  17. আমি কিভাবে স্বয়ংক্রিয়ভাবে নির্মাণ শিল্পকর্মের নাম পরিবর্তন করতে পারি?
  18. পাওয়ারশেল কমান্ড ব্যবহার করুন যেমন Rename-Item বিল্ড সংস্করণের উপর ভিত্তি করে ফাইলগুলির নাম পরিবর্তন করতে।
  19. কেন অন্তর্ভুক্ত distribution: 'temurin' জাভা সেটআপে?
  20. এটি ব্যবহার করার জন্য JDK বিতরণ নির্দিষ্ট করে, আপনার প্রকল্পের জন্য সঠিক জাভা সংস্করণ ইনস্টল করা হয়েছে তা নিশ্চিত করে।

MSVC141 সংহত করার চূড়ান্ত চিন্তা

আপনার ভিজ্যুয়াল স্টুডিও 2019 প্রকল্পগুলির স্থিতিশীলতা এবং কার্যকারিতা বজায় রাখার জন্য আপনার GitHub অ্যাকশন ওয়ার্কফ্লোতে MSVC141 টুলসেট অন্তর্ভুক্ত রয়েছে তা নিশ্চিত করা অপরিহার্য। আপনার .yml স্ক্রিপ্ট আপডেট করে এবং ইনস্টলেশন প্রক্রিয়া স্বয়ংক্রিয় করে, আপনি অনুপস্থিত ফাইলগুলির সাথে সম্পর্কিত সাধারণ বিল্ড ত্রুটিগুলি প্রতিরোধ করতে পারেন। এই সক্রিয় পদ্ধতিটি কেবল সময়ই সাশ্রয় করে না বরং আপনার সিআই/সিডি পাইপলাইনের কার্যকারিতাও বাড়ায়, মসৃণ এবং আরও নির্ভরযোগ্য প্রকল্প তৈরির অনুমতি দেয়।