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 का उपयोग करके सेटअप करना शामिल है 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 Actions में अपने विज़ुअल स्टूडियो 2019 प्रोजेक्ट्स के लिए एक स्थिर और सुसंगत निर्माण प्रक्रिया बनाए रख सकते हैं।
MSVC141 टूलसेट को शामिल करने के लिए .yml स्क्रिप्ट को अपडेट करें
GitHub क्रियाएँ YAML कॉन्फ़िगरेशन
name: Pull request - Windowson:pull_request:paths-ignore:- 'Engine/Engine.Android/'- 'Mobile/'jobs:build:runs-on: windows-2022defaults:run:shell: pwshenv:DEFAULT_VERSION: v17.4.500SolutionDir: ${{ github.workspace }}steps:- name: Checkoutuses: actions/checkout@v3with:token: ${{ secrets.RS_GITHUB_TOKEN }}submodules: true- uses: actions/setup-java@v4with:distribution: 'temurin'java-version: '11'- name: Setup MSBuilduses: microsoft/setup-msbuild@v1.1- name: Install Visual Studiouses: microsoft/setup-msbuild@v1.1with:vs-version: 2019msbuild-version: 16.x- name: Setup NuGet sourcesuses: extenda/actions/setup-nuget-sources@v0with:config-file: NuGet.Configsources: |[{"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 packagesrun: nuget restore POS.sln- name: Determine versionid: verrun: .\Build\determine-version.ps1- name: Update assembliesrun: .\Build\update-assemblies.ps1 ${{ steps.ver.outputs.version }} ${{ steps.ver.outputs.full-version }}- name: Generate database templaterun: |.\Common\Database\AppVeyor\gen-databases.ps1 Common\Database abcDbCopy-Item abcDb\Template.db -Destination Common\Database- name: Build solutionrun: msbuild POS.sln @Build\WindowsBuildParams.rsp- name: Build installation packagesrun: |.\Build\exit-on-failure.ps1msbuild Installation\Installation.sln @Build\WindowsBuildParams.rsp -p:BuildNumber=${{ steps.ver.outputs.full-version }}ExitOnFailureGet-ChildItem Installation\Bin\ReleaseRename-Item -Path Installation\Bin\Release\abc.msi -NewName abc-v${{ steps.ver.outputs.full-version }}.msiRename-Item -Path Installation\Bin\Release\abc.exe -NewName abc-v${{ steps.ver.outputs.full-version }}.exeRename-Item -Path Installation\Bin\Release\VRRSSurfaceComponentsEditor.msi -NewName SurfaceComponentsEditor-v${{ steps.ver.outputs.full-version }}.msi- name: Generate customization packagerun: .\Common\Database\AppVeyor\gen-customization-zip.ps1 Common\Database ${{ steps.ver.outputs.full-version }}- name: Save abc Installeruses: actions/upload-artifact@v3with:name: abcInstaller-v${{ steps.ver.outputs.full-version }}path: Installation\Bin\Release\abc-*.msi- name: Save abc Setupuses: actions/upload-artifact@v3with:name: abcSetup-v${{ steps.ver.outputs.full-version }}path: Installation\Bin\Release\abc-*.exe- name: Save Databaseuses: actions/upload-artifact@v3with: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 installationPathif (-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" -Waitif ($?) {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 स्रोतों को सही ढंग से कॉन्फ़िगर करना और उपयोगिताओं का उपयोग करना शामिल है vswhere.exe स्थापनाओं को सत्यापित करने के लिए. इन चरणों को अपने भीतर स्वचालित करना .yml और पॉवरशेल स्क्रिप्ट बिल्ड विफलताओं को रोकने में मदद करती है और आपकी सीआई/सीडी पाइपलाइन को सुचारू रूप से चालू रखती है, जिससे अंततः विकास के समय और संसाधनों की बचत होती है।
MSVC टूलसेट को एकीकृत करने के लिए सामान्य प्रश्न और समाधान
- मैं GitHub क्रियाओं में विज़ुअल स्टूडियो संस्करण कैसे निर्दिष्ट करूं?
- उपयोग vs-version: 2019 आपके में .yml वांछित विज़ुअल स्टूडियो संस्करण सेट करने के लिए कॉन्फ़िगरेशन।
- क्या है vswhere.exe और इसका उपयोग क्यों किया जाता है?
- vswhere.exe विज़ुअल स्टूडियो इंस्टॉलेशन का पता लगाने के लिए एक उपयोगिता है, जो यह सुनिश्चित करती है कि आवश्यक टूलसेट उपलब्ध हैं।
- मैं लापता घटकों की स्थापना को स्वचालित कैसे कर सकता हूं?
- उपयोग Start-Process अनअटेंडेड इंस्टॉलेशन के लिए आवश्यक तर्कों के साथ इंस्टॉलर को चलाने के लिए PowerShell में।
- NuGet स्रोतों को कॉन्फ़िगर करना क्यों महत्वपूर्ण है?
- NuGet स्रोतों को कॉन्फ़िगर करना सुनिश्चित करता है कि सभी प्रोजेक्ट निर्भरताएँ हल हो गई हैं, जो सफल निर्माण के लिए महत्वपूर्ण है।
- मैं MSVC141 टूलसेट की उपस्थिति की जाँच कैसे करूँ?
- उपयोग vswhere.exe MSVC141 टूलसेट के इंस्टॉलेशन पथ को सत्यापित करने के लिए एक स्क्रिप्ट में।
- क्या करता है msbuild-version: 16.x उल्लिखित करना?
- यह MSVC141 टूलसेट के साथ संगतता सुनिश्चित करते हुए, उपयोग किए जाने वाले MSBuild संस्करण को निर्दिष्ट करता है।
- मैं GitHub क्रियाओं में NuGet पैकेज़ों को कैसे पुनर्स्थापित करूँ?
- आदेश का प्रयोग करें nuget restore इसके बाद आपकी समाधान फ़ाइल, जैसे nuget restore POS.sln.
- का उद्देश्य क्या है Setup MSBuild कार्रवाई?
- यह MSBuild का उपयोग करने के लिए पर्यावरण को कॉन्फ़िगर करता है, जो GitHub Actions में .NET प्रोजेक्ट बनाने के लिए आवश्यक है।
- मैं स्वचालित रूप से बिल्ड कलाकृतियों का नाम कैसे बदल सकता हूँ?
- जैसे PowerShell कमांड का उपयोग करें Rename-Item बिल्ड संस्करण के आधार पर फ़ाइलों का नाम बदलने के लिए।
- क्यों शामिल करें? distribution: 'temurin' जावा सेटअप में?
- यह उपयोग के लिए जेडीके वितरण को निर्दिष्ट करता है, यह सुनिश्चित करते हुए कि आपके प्रोजेक्ट के लिए सही जावा संस्करण स्थापित है।
MSVC141 को एकीकृत करने पर अंतिम विचार
यह सुनिश्चित करना कि MSVC141 टूलसेट आपके GitHub Actions वर्कफ़्लो में शामिल है, आपके विज़ुअल स्टूडियो 2019 प्रोजेक्ट्स की स्थिरता और कार्यक्षमता को बनाए रखने के लिए आवश्यक है। अपनी .yml स्क्रिप्ट को अपडेट करके और इंस्टॉलेशन प्रक्रिया को स्वचालित करके, आप गुम फ़ाइलों से संबंधित सामान्य बिल्ड त्रुटियों को रोक सकते हैं। यह सक्रिय दृष्टिकोण न केवल समय बचाता है बल्कि आपके सीआई/सीडी पाइपलाइन की दक्षता को भी बढ़ाता है, जिससे अधिक सहज और अधिक विश्वसनीय प्रोजेक्ट निर्माण की अनुमति मिलती है।