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 | PowerShell-ൽ ഒരു പുതിയ പ്രക്രിയ ആരംഭിക്കുന്നു, ഇത് ഇൻസ്റ്റാളറുകൾ അല്ലെങ്കിൽ മറ്റ് എക്സിക്യൂട്ടബിളുകൾ പ്രവർത്തിപ്പിക്കുന്നതിന് ഉപയോഗപ്രദമാണ്. |
vswhere.exe | വിഷ്വൽ സ്റ്റുഡിയോ ഇൻസ്റ്റാളേഷനുകൾ കണ്ടെത്തുന്നതിനുള്ള ഒരു യൂട്ടിലിറ്റി, MSVC141 ൻ്റെ സാന്നിധ്യം പരിശോധിക്കാൻ ഉപയോഗിക്കുന്നു. |
GitHub പ്രവർത്തനങ്ങളിൽ MSVC141 ടൂൾസെറ്റ് സമന്വയിപ്പിക്കുന്നു
മുകളിൽ നൽകിയിരിക്കുന്ന സ്ക്രിപ്റ്റുകൾ നിങ്ങളുടെ GitHub പ്രവർത്തനങ്ങളുടെ വർക്ക്ഫ്ലോയിൽ MSVC141 ടൂൾസെറ്റ് ഉൾപ്പെടുത്തിയിട്ടുണ്ടെന്ന് ഉറപ്പാക്കുന്നു. ആവശ്യമായ ഉപകരണങ്ങളും പരിതസ്ഥിതികളും സജ്ജീകരിക്കുന്നതിന് ആവശ്യമായ ഘട്ടങ്ങൾ ഉൾപ്പെടുത്തുന്നതിന് ആദ്യ സ്ക്രിപ്റ്റ് YAML കോൺഫിഗറേഷൻ ഫയൽ അപ്ഡേറ്റ് ചെയ്യുന്നു. MSBuild ഉപയോഗിച്ച് സജ്ജീകരിക്കുന്നത് ഇതിൽ ഉൾപ്പെടുന്നു microsoft/setup-msbuild@v1.1, വിഷ്വൽ സ്റ്റുഡിയോ പതിപ്പ് വ്യക്തമാക്കുന്നത് vs-version: 2019, എന്ന് ഉറപ്പ് വരുത്തുന്നു msbuild-version: 16.x ഉപയോഗിക്കുന്നു. MSVC141 ഉപയോഗിക്കുന്നതിന് ബിൽഡ് എൻവയോൺമെൻ്റ് ശരിയായി ക്രമീകരിച്ചിട്ടുണ്ടെന്ന് ഈ ഘട്ടങ്ങൾ ഉറപ്പാക്കുന്നു.
കൂടാതെ, MSVC141 ടൂൾസെറ്റിൻ്റെ സാന്നിധ്യം പവർഷെൽ സ്ക്രിപ്റ്റ് പരിശോധിക്കുന്നു vswhere.exe. അത് കണ്ടെത്തിയില്ലെങ്കിൽ, സ്ക്രിപ്റ്റ് പ്രവർത്തിപ്പിച്ച് ഇൻസ്റ്റലേഷൻ പ്രക്രിയ ആരംഭിക്കുന്നു Start-Process കാണാതായ ഘടകങ്ങൾ ഇൻസ്റ്റാൾ ചെയ്യുന്നതിന് ആവശ്യമായ ആർഗ്യുമെൻ്റുകൾക്കൊപ്പം. ഈ ഓട്ടോമേറ്റഡ് സമീപനം ആവശ്യമായ ടൂൾസെറ്റ് ലഭ്യമാണെന്ന് ഉറപ്പാക്കുന്നു, ഇത് തടയുന്നു fatal error C1083 കാണാതായതുമായി ബന്ധപ്പെട്ട് 'atlbase.h' പോലുള്ള ഫയലുകൾ ഉൾപ്പെടുന്നു. ഈ ഘട്ടങ്ങൾ പാലിക്കുന്നതിലൂടെ, GitHub പ്രവർത്തനങ്ങളിൽ നിങ്ങളുടെ വിഷ്വൽ സ്റ്റുഡിയോ 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 ആക്ഷനുകൾ പോലെയുള്ള തുടർച്ചയായ സംയോജന (CI) പരിതസ്ഥിതിയിൽ വിവിധ ടൂൾസെറ്റുകളുമായി അനുയോജ്യത നിലനിർത്തുന്നത് സ്ഥിരമായ ബിൽഡുകൾ ഉറപ്പാക്കുന്നതിനും പിശകുകൾ കുറയ്ക്കുന്നതിനും നിർണായകമാണ്. ആവശ്യമായ ടൂളുകളും ഡിപൻഡൻസികളും ഉപയോഗിച്ച് നിങ്ങളുടെ കോൺഫിഗറേഷൻ ഫയലുകൾ കാലികമായി നിലനിർത്തുക എന്നതാണ് ഒരു പ്രധാന വശം. MSVC141-ൻ്റെ കാര്യത്തിൽ, ഈ ടൂൾസെറ്റ് ചില പ്രോജക്റ്റുകൾക്ക് അത്യന്താപേക്ഷിതമാണെന്ന് മനസ്സിലാക്കേണ്ടത് പ്രധാനമാണ്, പ്രത്യേകിച്ചും പഴയ C++ ലൈബ്രറികളെയും ഘടകങ്ങളെയും ആശ്രയിക്കുന്നവ.
നിങ്ങളുടെ GitHub പ്രവർത്തന സജ്ജീകരണത്തിൽ 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 നടപടി?
- GitHub പ്രവർത്തനങ്ങളിൽ .NET പ്രൊജക്റ്റുകൾ നിർമ്മിക്കുന്നതിന് ആവശ്യമായ MSBuild ഉപയോഗിക്കുന്നതിനുള്ള അന്തരീക്ഷം ഇത് കോൺഫിഗർ ചെയ്യുന്നു.
- എനിക്ക് എങ്ങനെ ബിൽഡ് ആർട്ടിഫാക്റ്റുകളുടെ പേര് സ്വയമേവ പുനർനാമകരണം ചെയ്യാം?
- പോലുള്ള PowerShell കമാൻഡുകൾ ഉപയോഗിക്കുക Rename-Item ബിൽഡ് പതിപ്പിനെ അടിസ്ഥാനമാക്കി ഫയലുകളുടെ പേരുമാറ്റാൻ.
- എന്തിനാണ് ഉൾപ്പെടുത്തുന്നത് distribution: 'temurin' ജാവ സെറ്റപ്പിൽ?
- നിങ്ങളുടെ പ്രോജക്റ്റിനായി ശരിയായ ജാവ പതിപ്പ് ഇൻസ്റ്റാൾ ചെയ്തിട്ടുണ്ടെന്ന് ഉറപ്പാക്കിക്കൊണ്ട് ഇത് ഉപയോഗിക്കേണ്ട JDK വിതരണത്തെ വ്യക്തമാക്കുന്നു.
MSVC141 സംയോജിപ്പിക്കുന്നതിനെക്കുറിച്ചുള്ള അന്തിമ ചിന്തകൾ
നിങ്ങളുടെ വിഷ്വൽ സ്റ്റുഡിയോ 2019 പ്രോജക്റ്റുകളുടെ സ്ഥിരതയും പ്രവർത്തനക്ഷമതയും നിലനിർത്തുന്നതിന് നിങ്ങളുടെ GitHub പ്രവർത്തനങ്ങളുടെ വർക്ക്ഫ്ലോയിൽ MSVC141 ടൂൾസെറ്റ് ഉൾപ്പെടുത്തിയിട്ടുണ്ടെന്ന് ഉറപ്പാക്കേണ്ടത് അത്യാവശ്യമാണ്. നിങ്ങളുടെ .yml സ്ക്രിപ്റ്റുകൾ അപ്ഡേറ്റ് ചെയ്യുന്നതിലൂടെയും ഇൻസ്റ്റലേഷൻ പ്രക്രിയ ഓട്ടോമേറ്റ് ചെയ്യുന്നതിലൂടെയും, നഷ്ടപ്പെട്ട ഫയലുകളുമായി ബന്ധപ്പെട്ട സാധാരണ ബിൽഡ് പിശകുകൾ നിങ്ങൾക്ക് തടയാനാകും. ഈ സജീവമായ സമീപനം സമയം ലാഭിക്കുക മാത്രമല്ല നിങ്ങളുടെ CI/CD പൈപ്പ്ലൈനിൻ്റെ കാര്യക്ഷമത വർദ്ധിപ്പിക്കുകയും ചെയ്യുന്നു, ഇത് സുഗമവും കൂടുതൽ വിശ്വസനീയവുമായ പ്രോജക്റ്റ് ബിൽഡുകൾക്ക് അനുവദിക്കുന്നു.