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 | ప్రాజెక్ట్ డిపెండెన్సీలను పునరుద్ధరించడానికి అవసరమైన GitHub చర్యలలో NuGet మూలాలను కాన్ఫిగర్ చేస్తుంది. |
nuget restore POS.sln | నిర్దేశిత పరిష్కారం కోసం NuGet ప్యాకేజీలను పునరుద్ధరిస్తుంది, బిల్డ్కు ముందు అన్ని డిపెండెన్సీలను పరిష్కరిస్తుంది. |
Copy-Item | డేటాబేస్ టెంప్లేట్లను నిర్వహించడానికి ఇక్కడ ఉపయోగించిన PowerShellలో ఫైల్లను ఒక స్థానం నుండి మరొక ప్రదేశానికి కాపీ చేస్తుంది. |
Start-Process | పవర్షెల్లో కొత్త ప్రక్రియను ప్రారంభిస్తుంది, ఇన్స్టాలర్లు లేదా ఇతర ఎక్జిక్యూటబుల్లను అమలు చేయడానికి ఉపయోగపడుతుంది. |
vswhere.exe | విజువల్ స్టూడియో ఇన్స్టాలేషన్లను గుర్తించే యుటిలిటీ, MSVC141 ఉనికిని తనిఖీ చేయడానికి ఉపయోగించబడుతుంది. |
GitHub చర్యలలో MSVC141 టూల్సెట్ని సమగ్రపరచడం
పైన అందించిన స్క్రిప్ట్లు మీ GitHub చర్యల వర్క్ఫ్లోలో MSVC141 టూల్సెట్ చేర్చబడిందని నిర్ధారిస్తుంది. అవసరమైన సాధనాలు మరియు పరిసరాలను సెటప్ చేయడానికి అవసరమైన దశలను చేర్చడానికి మొదటి స్క్రిప్ట్ 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ని తనిఖీ చేయడం మరియు ఇన్స్టాల్ చేయడం కోసం PowerShell స్క్రిప్ట్
$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 చర్యల వంటి నిరంతర ఇంటిగ్రేషన్ (CI) వాతావరణంలో వివిధ టూల్సెట్లతో అనుకూలతను కొనసాగించడం స్థిరమైన నిర్మాణాలను నిర్ధారించడానికి మరియు లోపాలను తగ్గించడానికి కీలకం. అవసరమైన సాధనాలు మరియు డిపెండెన్సీలతో మీ కాన్ఫిగరేషన్ ఫైల్లను తాజాగా ఉంచడం ఒక ముఖ్య అంశం. MSVC141 విషయంలో, నిర్దిష్ట ప్రాజెక్ట్లకు, ప్రత్యేకించి పాత C++ లైబ్రరీలు మరియు కాంపోనెంట్లపై ఆధారపడే వాటికి ఈ టూల్సెట్ అవసరమని అర్థం చేసుకోవడం ముఖ్యం.
మీ GitHub చర్యల సెటప్లో MSVC141 టూల్సెట్తో సహా సరైన విజువల్ స్టూడియో వెర్షన్ను పేర్కొనడం మాత్రమే కాకుండా అన్ని డిపెండెన్సీలు పరిష్కరించబడతాయని నిర్ధారించడం కూడా ఉంటుంది. NuGet మూలాలను సరిగ్గా కాన్ఫిగర్ చేయడం మరియు వంటి యుటిలిటీలను ఉపయోగించడం ఇందులో ఉంటుంది vswhere.exe సంస్థాపనలను ధృవీకరించడానికి. మీలో ఈ దశలను ఆటోమేట్ చేస్తోంది .yml మరియు PowerShell స్క్రిప్ట్లు నిర్మాణ వైఫల్యాలను నిరోధించడంలో సహాయపడతాయి మరియు మీ CI/CD పైప్లైన్ సజావుగా నడుస్తుంది, చివరికి అభివృద్ధి సమయం మరియు వనరులను ఆదా చేస్తుంది.
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 చర్య?
- ఇది GitHub చర్యలలో .NET ప్రాజెక్ట్లను నిర్మించడానికి అవసరమైన MSBuildని ఉపయోగించడానికి పర్యావరణాన్ని కాన్ఫిగర్ చేస్తుంది.
- నేను బిల్డ్ కళాఖండాల పేరును ఆటోమేటిక్గా ఎలా మార్చగలను?
- వంటి PowerShell ఆదేశాలను ఉపయోగించండి Rename-Item బిల్డ్ వెర్షన్ ఆధారంగా ఫైల్ల పేరు మార్చడానికి.
- ఎందుకు చేర్చాలి distribution: 'temurin' జావా సెటప్లో?
- ఇది ఉపయోగించడానికి JDK పంపిణీని నిర్దేశిస్తుంది, మీ ప్రాజెక్ట్ కోసం సరైన జావా వెర్షన్ ఇన్స్టాల్ చేయబడిందని నిర్ధారిస్తుంది.
MSVC141ని సమగ్రపరచడంపై తుది ఆలోచనలు
మీ విజువల్ స్టూడియో 2019 ప్రాజెక్ట్ల స్థిరత్వం మరియు కార్యాచరణను నిర్వహించడానికి MSVC141 టూల్సెట్ మీ GitHub చర్యల వర్క్ఫ్లో చేర్చబడిందని నిర్ధారించుకోవడం చాలా అవసరం. మీ .yml స్క్రిప్ట్లను అప్డేట్ చేయడం మరియు ఇన్స్టాలేషన్ ప్రాసెస్ను ఆటోమేట్ చేయడం ద్వారా, మిస్ అయిన ఫైల్లకు సంబంధించిన సాధారణ బిల్డ్ ఎర్రర్లను మీరు నిరోధించవచ్చు. ఈ చురుకైన విధానం సమయాన్ని ఆదా చేయడమే కాకుండా మీ CI/CD పైప్లైన్ యొక్క సామర్థ్యాన్ని మెరుగుపరుస్తుంది, ఇది సున్నితమైన మరియు మరింత విశ్వసనీయమైన ప్రాజెక్ట్ నిర్మాణాలను అనుమతిస్తుంది.