GitHub ایکشنز میں MSVC141 کے مسائل کو حل کرنا
ہم ایک ویژول اسٹوڈیو 2019 پروجیکٹ پر کام کر رہے ہیں جس نے حال ہی میں لاپتہ فائلوں، خاص طور پر 'atlbase.h' سے متعلق مستثنیات کو پھینکنا شروع کر دیا ہے۔ ایسا لگتا ہے کہ یہ مسئلہ MSVC141 ٹول سیٹ کی عدم موجودگی کی وجہ سے ہے، جس کی چند ماہ قبل تک ضرورت نہیں تھی۔
اس مضمون میں، ہم آپ کی رہنمائی کریں گے کہ MSVC141 ٹول سیٹ کو شامل کرنے کے لیے GitHub ایکشنز میں اپنے .yml اسکرپٹس کو کیسے اپ ڈیٹ کریں۔ یہ ہموار پروجیکٹ کی تعمیر کو یقینی بناتا ہے اور 'فائل شامل نہیں کھول سکتا' کی غلطی سے بچتا ہے، جس سے آپ کو اپنے ترقیاتی کام کے فلو میں پیداواری صلاحیت کو برقرار رکھنے میں مدد ملتی ہے۔
کمانڈ | تفصیل |
---|---|
uses: microsoft/setup-msbuild@v1.1 | GitHub ایکشنز کے لیے MSBuild سیٹ اپ کرتا ہے، .NET پروجیکٹس کی تعمیر کی اجازت دیتا ہے۔ |
vs-version: 2019 | MSVC141 ٹول سیٹ کے ساتھ مطابقت کو یقینی بناتے ہوئے، استعمال کرنے کے لیے Visual Studio کے ورژن کی وضاحت کرتا ہے۔ |
msbuild-version: 16.x | تالیف کے لیے مطلوبہ MSVC141 ٹول سیٹ کے ساتھ ترتیب دیتے ہوئے MSBuild ورژن کی وضاحت کرتا ہے۔ |
extenda/actions/setup-nuget-sources@v0 | گٹ ہب ایکشنز میں نیو گیٹ کے ذرائع کو ترتیب دیتا ہے، جو پروجیکٹ کے انحصار کو بحال کرنے کے لیے ضروری ہے۔ |
nuget restore POS.sln | تعمیر سے پہلے تمام انحصار کو حل کرتے ہوئے، مخصوص حل کے لیے NuGet پیکجوں کو بحال کرتا ہے۔ |
Copy-Item | PowerShell میں فائلوں کو ایک مقام سے دوسرے مقام پر کاپی کرتا ہے، یہاں ڈیٹا بیس ٹیمپلیٹس کو ہینڈل کرنے کے لیے استعمال کیا جاتا ہے۔ |
Start-Process | پاور شیل میں ایک نیا عمل شروع کرتا ہے، جو انسٹالرز یا دیگر ایگزیکیوٹیبل چلانے کے لیے مفید ہے۔ |
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' جیسی فائلیں شامل ہیں۔ ان اقدامات پر عمل کرکے، آپ GitHub ایکشنز میں اپنے Visual Studio 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) ماحول میں مختلف ٹول سیٹس کے ساتھ مطابقت برقرار رکھنا جیسے GitHub ایکشنز مستقل تعمیرات کو یقینی بنانے اور غلطیوں کو کم کرنے کے لیے بہت ضروری ہے۔ ایک اہم پہلو یہ ہے کہ آپ اپنی کنفیگریشن فائلوں کو ضروری ٹولز اور انحصار کے ساتھ اپ ٹو ڈیٹ رکھیں۔ MSVC141 کے معاملے میں، یہ سمجھنا ضروری ہے کہ یہ ٹول سیٹ بعض پروجیکٹس کے لیے ضروری ہے، خاص طور پر وہ جو پرانی C++ لائبریریوں اور اجزاء پر انحصار کرتے ہیں۔
آپ کے GitHub ایکشن سیٹ اپ میں MSVC141 ٹول سیٹ کو شامل کرنے میں نہ صرف صحیح Visual Studio ورژن کی وضاحت کرنا شامل ہے بلکہ یہ بھی یقینی بنانا ہے کہ تمام انحصارات کو حل کیا جائے۔ اس میں NuGet ذرائع کو درست طریقے سے ترتیب دینا اور یوٹیلیٹیز جیسے استعمال کرنا شامل ہے۔ vswhere.exe تنصیبات کی تصدیق کرنے کے لیے۔ اپنے اندر ان اقدامات کو خودکار کرنا .yml اور پاور شیل اسکرپٹس تعمیراتی ناکامیوں کو روکنے میں مدد کرتی ہیں اور آپ کی CI/CD پائپ لائن کو آسانی سے چلتی رہتی ہیں، بالآخر ترقیاتی وقت اور وسائل کی بچت ہوتی ہے۔
MSVC ٹول سیٹس کو مربوط کرنے کے لیے عام سوالات اور حل
- میں گٹ ہب ایکشنز میں بصری اسٹوڈیو ورژن کی وضاحت کیسے کروں؟
- استعمال کریں۔ vs-version: 2019 آپ میں .yml مطلوبہ بصری اسٹوڈیو ورژن سیٹ کرنے کے لیے ترتیب۔
- کیا vswhere.exe اور یہ کیوں استعمال کیا جاتا ہے؟
- vswhere.exe بصری اسٹوڈیو کی تنصیبات کو تلاش کرنے کے لیے ایک افادیت ہے، اس بات کو یقینی بناتے ہوئے کہ مطلوبہ ٹول سیٹ دستیاب ہوں۔
- میں گمشدہ اجزاء کی تنصیب کو کیسے خودکار کر سکتا ہوں؟
- استعمال کریں۔ Start-Process پاور شیل میں انسٹالر کو غیر ضروری تنصیبات کے لیے ضروری دلائل کے ساتھ چلانے کے لیے۔
- NuGet ذرائع کو ترتیب دینا کیوں ضروری ہے؟
- NuGet ذرائع کو ترتیب دینا یقینی بناتا ہے کہ پروجیکٹ کے تمام انحصار حل ہو جائیں، جو کامیاب تعمیرات کے لیے بہت ضروری ہے۔
- میں MSVC141 ٹول سیٹ کی موجودگی کی جانچ کیسے کروں؟
- استعمال کریں۔ vswhere.exe MSVC141 ٹول سیٹ کے انسٹالیشن پاتھ کی تصدیق کرنے کے لیے اسکرپٹ میں۔
- کیا کرتا ہے msbuild-version: 16.x وضاحت کریں؟
- یہ MSVC141 ٹول سیٹ کے ساتھ مطابقت کو یقینی بناتے ہوئے، استعمال کیے جانے والے MSBuild ورژن کی وضاحت کرتا ہے۔
- میں گٹ ہب ایکشنز میں نیو گیٹ پیکیجز کو کیسے بحال کروں؟
- کمانڈ استعمال کریں۔ nuget restore اس کے بعد آپ کی حل فائل، جیسے nuget restore POS.sln.
- کا مقصد کیا ہے Setup MSBuild عمل؟
- یہ GitHub ایکشنز میں .NET پروجیکٹس بنانے کے لیے ضروری MSBuild استعمال کرنے کے لیے ماحول کو ترتیب دیتا ہے۔
- میں خود بخود تعمیراتی نمونے کا نام کیسے رکھ سکتا ہوں؟
- پاور شیل کمانڈز استعمال کریں۔ Rename-Item بلڈ ورژن کی بنیاد پر فائلوں کا نام تبدیل کرنا۔
- کیوں شامل کریں۔ distribution: 'temurin' جاوا سیٹ اپ میں؟
- یہ استعمال کرنے کے لیے JDK تقسیم کی وضاحت کرتا ہے، اس بات کو یقینی بناتا ہے کہ آپ کے پروجیکٹ کے لیے صحیح Java ورژن انسٹال ہے۔
MSVC141 کو مربوط کرنے کے بارے میں حتمی خیالات
اس بات کو یقینی بنانا کہ MSVC141 ٹول سیٹ آپ کے GitHub ایکشنز ورک فلو میں شامل ہے آپ کے Visual Studio 2019 پروجیکٹس کے استحکام اور فعالیت کو برقرار رکھنے کے لیے ضروری ہے۔ اپنی .yml اسکرپٹس کو اپ ڈیٹ کرکے اور انسٹالیشن کے عمل کو خودکار بنا کر، آپ مسنگ فائلوں سے متعلق عام تعمیراتی غلطیوں کو روک سکتے ہیں۔ یہ فعال نقطہ نظر نہ صرف وقت بچاتا ہے بلکہ آپ کی CI/CD پائپ لائن کی کارکردگی کو بھی بڑھاتا ہے، جس سے ہموار اور زیادہ قابل اعتماد پراجیکٹ کی تعمیر ہوتی ہے۔