GitHub માં MSVC141 માટે .yml સ્ક્રિપ્ટ અપડેટ કરવા માટેની માર્ગદર્શિકા

GitHub માં MSVC141 માટે .yml સ્ક્રિપ્ટ અપડેટ કરવા માટેની માર્ગદર્શિકા
GitHub માં MSVC141 માટે .yml સ્ક્રિપ્ટ અપડેટ કરવા માટેની માર્ગદર્શિકા

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 ટૂલસેટને એકીકૃત કરવું

ઉપર આપેલી સ્ક્રિપ્ટો ખાતરી કરે છે કે MSVC141 ટૂલસેટ તમારા GitHub ક્રિયાઓના વર્કફ્લોમાં શામેલ છે. પ્રથમ સ્ક્રિપ્ટ જરૂરી સાધનો અને વાતાવરણને સુયોજિત કરવા માટે જરૂરી પગલાંઓનો સમાવેશ કરવા માટે 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 ટૂલસેટ્સ સાથે સુસંગતતાની ખાતરી કરવી

સતત એકીકરણ (CI) વાતાવરણમાં વિવિધ ટૂલસેટ્સ સાથે સુસંગતતા જાળવી રાખવી, જેમ કે GitHub ક્રિયાઓ સુસંગત બિલ્ડ્સની ખાતરી કરવા અને ભૂલોને ઘટાડવા માટે નિર્ણાયક છે. એક મુખ્ય પાસું તમારી રૂપરેખાંકન ફાઇલોને જરૂરી સાધનો અને નિર્ભરતા સાથે અદ્યતન રાખવાનું છે. MSVC141 ના કિસ્સામાં, એ સમજવું અગત્યનું છે કે આ ટૂલસેટ અમુક પ્રોજેક્ટ્સ માટે જરૂરી છે, ખાસ કરીને જેઓ જૂની C++ લાઇબ્રેરીઓ અને ઘટકો પર આધાર રાખે છે.

તમારા GitHub ક્રિયાઓના સેટઅપમાં MSVC141 ટૂલસેટનો સમાવેશ કરવાથી માત્ર સાચા વિઝ્યુઅલ સ્ટુડિયો વર્ઝનનો ઉલ્લેખ જ નહીં પરંતુ તમામ નિર્ભરતાઓ ઉકેલાઈ છે તેની ખાતરી કરવી પણ સામેલ છે. આમાં NuGet સ્ત્રોતોને યોગ્ય રીતે રૂપરેખાંકિત કરવા અને ઉપયોગિતાઓનો ઉપયોગ કરવાનો સમાવેશ થાય છે vswhere.exe સ્થાપનો ચકાસવા માટે. તમારી અંદર આ પગલાંને સ્વચાલિત કરવું .yml અને પાવરશેલ સ્ક્રિપ્ટો બિલ્ડ નિષ્ફળતાઓને રોકવામાં મદદ કરે છે અને તમારી CI/CD પાઇપલાઇનને સરળતાથી ચાલતી રાખે છે, છેવટે વિકાસ સમય અને સંસાધનોની બચત કરે છે.

MSVC ટૂલસેટ્સને એકીકૃત કરવા માટે સામાન્ય પ્રશ્નો અને ઉકેલો

  1. હું GitHub ક્રિયાઓમાં વિઝ્યુઅલ સ્ટુડિયો સંસ્કરણનો ઉલ્લેખ કેવી રીતે કરી શકું?
  2. વાપરવુ vs-version: 2019 તમારા માં .yml ઇચ્છિત વિઝ્યુઅલ સ્ટુડિયો સંસ્કરણ સેટ કરવા માટે ગોઠવણી.
  3. શું છે vswhere.exe અને તેનો ઉપયોગ શા માટે થાય છે?
  4. vswhere.exe વિઝ્યુઅલ સ્ટુડિયો સ્થાપનોને શોધવા માટેની ઉપયોગિતા છે, જરૂરી ટૂલસેટ્સ ઉપલબ્ધ છે તેની ખાતરી કરીને.
  5. હું ગુમ થયેલ ઘટકોના ઇન્સ્ટોલેશનને કેવી રીતે સ્વચાલિત કરી શકું?
  6. વાપરવુ Start-Process અનટેન્ડેડ ઇન્સ્ટોલેશન માટે જરૂરી દલીલો સાથે ઇન્સ્ટોલરને ચલાવવા માટે PowerShell માં.
  7. NuGet સ્ત્રોતોને ગોઠવવાનું શા માટે મહત્વનું છે?
  8. NuGet સ્ત્રોતોને રૂપરેખાંકિત કરવું એ ખાતરી કરે છે કે તમામ પ્રોજેક્ટ નિર્ભરતાઓ ઉકેલાઈ ગઈ છે, જે સફળ બિલ્ડ માટે નિર્ણાયક છે.
  9. MSVC141 ટૂલસેટની હાજરી માટે હું કેવી રીતે તપાસ કરી શકું?
  10. વાપરવુ vswhere.exe MSVC141 ટૂલસેટના ઇન્સ્ટોલેશન પાથને ચકાસવા માટે સ્ક્રિપ્ટમાં.
  11. શું કરે msbuild-version: 16.x સ્પષ્ટ કરો?
  12. તે MSVC141 ટૂલસેટ સાથે સુસંગતતા સુનિશ્ચિત કરીને, ઉપયોગમાં લેવા માટે MSBuild સંસ્કરણનો ઉલ્લેખ કરે છે.
  13. હું GitHub ક્રિયાઓમાં NuGet પેકેજોને કેવી રીતે પુનઃસ્થાપિત કરી શકું?
  14. આદેશનો ઉપયોગ કરો nuget restore તમારી સોલ્યુશન ફાઇલ દ્વારા અનુસરવામાં આવે છે, જેમ કે nuget restore POS.sln.
  15. નો હેતુ શું છે Setup MSBuild ક્રિયા?
  16. તે GitHub ક્રિયાઓમાં .NET પ્રોજેક્ટ બનાવવા માટે જરૂરી MSBuild નો ઉપયોગ કરવા માટે પર્યાવરણને ગોઠવે છે.
  17. હું બિલ્ડ આર્ટિફેક્ટનું નામ આપમેળે કેવી રીતે બદલી શકું?
  18. પાવરશેલ આદેશોનો ઉપયોગ કરો જેમ કે Rename-Item બિલ્ડ વર્ઝનના આધારે ફાઇલોનું નામ બદલવા માટે.
  19. શા માટે સમાવેશ થાય છે distribution: 'temurin' જાવા સેટઅપમાં?
  20. આ તમારા પ્રોજેક્ટ માટે યોગ્ય Java સંસ્કરણ ઇન્સ્ટોલ કરેલું છે તેની ખાતરી કરીને, ઉપયોગ કરવા માટે JDK વિતરણનો ઉલ્લેખ કરે છે.

MSVC141 ને એકીકૃત કરવા પર અંતિમ વિચારો

તમારા વિઝ્યુઅલ સ્ટુડિયો 2019 પ્રોજેક્ટ્સની સ્થિરતા અને કાર્યક્ષમતા જાળવવા માટે તમારા GitHub ઍક્શન વર્કફ્લોમાં MSVC141 ટૂલસેટ શામેલ છે તેની ખાતરી કરવી જરૂરી છે. તમારી .yml સ્ક્રિપ્ટ્સને અપડેટ કરીને અને ઇન્સ્ટોલેશન પ્રક્રિયાને સ્વચાલિત કરીને, તમે ગુમ થયેલ ફાઇલોને લગતી સામાન્ય બિલ્ડ ભૂલોને અટકાવી શકો છો. આ સક્રિય અભિગમ માત્ર સમય બચાવતો નથી પરંતુ તમારી CI/CD પાઇપલાઇનની કાર્યક્ષમતામાં પણ વધારો કરે છે, જે સરળ અને વધુ વિશ્વાસપાત્ર પ્રોજેક્ટ નિર્માણ માટે પરવાનગી આપે છે.