GitHub क्रियाओं में MSVC141 समस्याओं का समाधान
हम एक विज़ुअल स्टूडियो 2019 प्रोजेक्ट पर काम कर रहे हैं जिसने हाल ही में गुम फ़ाइलों, विशेष रूप से 'atlbase.h' से संबंधित अपवाद फेंकना शुरू कर दिया है। यह समस्या MSVC141 टूलसेट की अनुपस्थिति के कारण प्रतीत होती है, जिसकी कुछ महीने पहले तक आवश्यकता नहीं थी।
इस लेख में, हम आपको MSVC141 टूलसेट को शामिल करने के लिए GitHub Actions में अपनी .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 | GitHub क्रियाओं में NuGet स्रोतों को कॉन्फ़िगर करता है, जो परियोजना निर्भरता को बहाल करने के लिए आवश्यक है। |
nuget restore POS.sln | निर्माण से पहले सभी निर्भरताओं को हल करते हुए, निर्दिष्ट समाधान के लिए NuGet पैकेज को पुनर्स्थापित करता है। |
Copy-Item | PowerShell में फ़ाइलों को एक स्थान से दूसरे स्थान पर कॉपी करता है, जिसका उपयोग यहां डेटाबेस टेम्पलेट्स को संभालने के लिए किया जाता है। |
Start-Process | PowerShell में एक नई प्रक्रिया शुरू करता है, जो इंस्टॉलर या अन्य निष्पादन योग्य चलाने के लिए उपयोगी है। |
vswhere.exe | विज़ुअल स्टूडियो इंस्टॉलेशन का पता लगाने के लिए एक उपयोगिता, जिसका उपयोग MSVC141 की उपस्थिति की जाँच करने के लिए किया जाता है। |
GitHub क्रियाओं में MSVC141 टूलसेट को एकीकृत करना
ऊपर दी गई स्क्रिप्ट यह सुनिश्चित करती है कि MSVC141 टूलसेट आपके GitHub Actions वर्कफ़्लो में शामिल है। पहली स्क्रिप्ट आवश्यक उपकरण और वातावरण स्थापित करने के लिए आवश्यक चरणों को शामिल करने के लिए YAML कॉन्फ़िगरेशन फ़ाइल को अपडेट करती है। इसमें MSBuild का उपयोग करके सेटअप करना शामिल है , विज़ुअल स्टूडियो संस्करण को निर्दिष्ट करते हुए , और यह सुनिश्चित करना कि प्रयोग किया जाता है। ये चरण सुनिश्चित करते हैं कि MSVC141 का उपयोग करने के लिए बिल्ड वातावरण सही ढंग से कॉन्फ़िगर किया गया है।
इसके अतिरिक्त, PowerShell स्क्रिप्ट MSVC141 टूलसेट का उपयोग करके उसकी उपस्थिति की जाँच करती है . यदि यह नहीं मिलता है, तो स्क्रिप्ट चलाकर इंस्टॉलेशन प्रक्रिया शुरू की जाती है लापता घटकों को स्थापित करने के लिए आवश्यक तर्कों के साथ। यह स्वचालित दृष्टिकोण सुनिश्चित करता है कि आवश्यक टूलसेट उपलब्ध है, जिससे इसे रोका जा सके गुम होने से संबंधित फाइलों में 'atlbase.h' जैसी फ़ाइलें शामिल हैं। इन चरणों का पालन करके, आप GitHub Actions में अपने विज़ुअल स्टूडियो 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 टूलसेट के साथ संगतता सुनिश्चित करना
GitHub Actions जैसे सतत एकीकरण (CI) वातावरण में विभिन्न टूलसेट के साथ संगतता बनाए रखना लगातार निर्माण सुनिश्चित करने और त्रुटियों को कम करने के लिए महत्वपूर्ण है। एक प्रमुख पहलू अपनी कॉन्फ़िगरेशन फ़ाइलों को आवश्यक टूल और निर्भरता के साथ अद्यतन रखना है। MSVC141 के मामले में, यह समझना महत्वपूर्ण है कि यह टूलसेट कुछ परियोजनाओं के लिए आवश्यक है, विशेष रूप से पुराने C++ लाइब्रेरी और घटकों पर निर्भर परियोजनाओं के लिए।
आपके GitHub Actions सेटअप में MSVC141 टूलसेट को शामिल करने में न केवल सही विज़ुअल स्टूडियो संस्करण निर्दिष्ट करना शामिल है, बल्कि यह सुनिश्चित करना भी शामिल है कि सभी निर्भरताएँ हल हो गई हैं। इसमें NuGet स्रोतों को सही ढंग से कॉन्फ़िगर करना और उपयोगिताओं का उपयोग करना शामिल है स्थापनाओं को सत्यापित करने के लिए. इन चरणों को अपने भीतर स्वचालित करना और पॉवरशेल स्क्रिप्ट बिल्ड विफलताओं को रोकने में मदद करती है और आपकी सीआई/सीडी पाइपलाइन को सुचारू रूप से चालू रखती है, जिससे अंततः विकास के समय और संसाधनों की बचत होती है।
- मैं GitHub क्रियाओं में विज़ुअल स्टूडियो संस्करण कैसे निर्दिष्ट करूं?
- उपयोग आपके में वांछित विज़ुअल स्टूडियो संस्करण सेट करने के लिए कॉन्फ़िगरेशन।
- क्या है और इसका उपयोग क्यों किया जाता है?
- विज़ुअल स्टूडियो इंस्टॉलेशन का पता लगाने के लिए एक उपयोगिता है, जो यह सुनिश्चित करती है कि आवश्यक टूलसेट उपलब्ध हैं।
- मैं लापता घटकों की स्थापना को स्वचालित कैसे कर सकता हूं?
- उपयोग अनअटेंडेड इंस्टॉलेशन के लिए आवश्यक तर्कों के साथ इंस्टॉलर को चलाने के लिए PowerShell में।
- NuGet स्रोतों को कॉन्फ़िगर करना क्यों महत्वपूर्ण है?
- NuGet स्रोतों को कॉन्फ़िगर करना सुनिश्चित करता है कि सभी प्रोजेक्ट निर्भरताएँ हल हो गई हैं, जो सफल निर्माण के लिए महत्वपूर्ण है।
- मैं MSVC141 टूलसेट की उपस्थिति की जाँच कैसे करूँ?
- उपयोग MSVC141 टूलसेट के इंस्टॉलेशन पथ को सत्यापित करने के लिए एक स्क्रिप्ट में।
- क्या करता है उल्लिखित करना?
- यह MSVC141 टूलसेट के साथ संगतता सुनिश्चित करते हुए, उपयोग किए जाने वाले MSBuild संस्करण को निर्दिष्ट करता है।
- मैं GitHub क्रियाओं में NuGet पैकेज़ों को कैसे पुनर्स्थापित करूँ?
- आदेश का प्रयोग करें इसके बाद आपकी समाधान फ़ाइल, जैसे .
- का उद्देश्य क्या है कार्रवाई?
- यह MSBuild का उपयोग करने के लिए पर्यावरण को कॉन्फ़िगर करता है, जो GitHub Actions में .NET प्रोजेक्ट बनाने के लिए आवश्यक है।
- मैं स्वचालित रूप से बिल्ड कलाकृतियों का नाम कैसे बदल सकता हूँ?
- जैसे PowerShell कमांड का उपयोग करें बिल्ड संस्करण के आधार पर फ़ाइलों का नाम बदलने के लिए।
- क्यों शामिल करें? जावा सेटअप में?
- यह उपयोग के लिए जेडीके वितरण को निर्दिष्ट करता है, यह सुनिश्चित करते हुए कि आपके प्रोजेक्ट के लिए सही जावा संस्करण स्थापित है।
यह सुनिश्चित करना कि MSVC141 टूलसेट आपके GitHub Actions वर्कफ़्लो में शामिल है, आपके विज़ुअल स्टूडियो 2019 प्रोजेक्ट्स की स्थिरता और कार्यक्षमता को बनाए रखने के लिए आवश्यक है। अपनी .yml स्क्रिप्ट को अपडेट करके और इंस्टॉलेशन प्रक्रिया को स्वचालित करके, आप गुम फ़ाइलों से संबंधित सामान्य बिल्ड त्रुटियों को रोक सकते हैं। यह सक्रिय दृष्टिकोण न केवल समय बचाता है बल्कि आपके सीआई/सीडी पाइपलाइन की दक्षता को भी बढ़ाता है, जिससे अधिक सहज और अधिक विश्वसनीय प्रोजेक्ट निर्माण की अनुमति मिलती है।