บทช่วยสอน: ตั้งค่าไปป์ไลน์รายคืนสําหรับแอปการเงินและการดําเนินงานโดยใช้ Azure DevOps

ลูกค้าที่พัฒนาการปรับแต่ง X++ สําหรับแอปการเงินและการดําเนินงานต้องมีไปป์ไลน์การสร้างอัตโนมัติที่รวบรวมรหัสของพวกเขา สร้างแพคเกจที่ปรับใช้ได้ และทําให้พร้อมใช้งานสําหรับการเผยแพร่ เมื่อใช้สภาพแวดล้อมแบบรวมในศูนย์การจัดการ Power Platform เอาต์พุตของรุ่นเป็นแพคเกจแบบรวมของ Power Platform ที่สามารถเลือกใส่โซลูชัน Dataverse ควบคู่ไปกับเอาต์พุตที่คอมไพล์ X++ ทั้งหมดสามารถปรับใช้ได้ผ่านคําสั่งเดียวpac package deploy

ในบทช่วยสอนนี้ เรียนรู้วิธีการ:

  • ตั้งค่าตัวดึงข้อมูลแพคเกจ NuGet ด้วยแพคเกจอ้างอิงรุ่นที่จําเป็น
  • สร้าง packages.config และ nuget.config ไฟล์สําหรับการจัดการเวอร์ชัน
  • สร้างไปป์ไลน์ Azure DevOps YAML ที่คอมไพล์ X++ และสร้างแพคเกจแบบรวมตามกําหนดเวลากลางคืน
  • หรืออาจรวมโซลูชัน Dataverse อย่างน้อยหนึ่งตัวในแพคเกจแบบรวม

ในฐานะตัวอย่างของสถานการณ์นี้ ลูกค้ามีการกําหนดค่า X++ สําหรับการเงิน Dynamics 365 ที่ทํางานบนสภาพแวดล้อมแบบรวม พวกเขาต้องการการสร้างในตอนกลางคืนที่รวบรวมโค้ด จัดแพคเกจควบคู่ไปกับโซลูชัน Dataverse และเผยแพร่อาร์ติแฟกต์สําหรับไปป์ไลน์เผยแพร่เพื่อปรับใช้

ก่อนที่คุณจะเริ่มต้น

ขั้นตอนที่ 1: รับแพคเกจอ้างอิงรุ่น NuGet

กระบวนการสร้าง X++ จําเป็นต้องใช้แพคเกจ NuGet ที่ประกอบด้วยเครื่องมือคอมไพเลอร์และแอสเซมบลีอ้างอิงสําหรับแพลตฟอร์มและโมดูลแอปพลิเคชัน รุ่นเต็มจําเป็นต้องใช้ห้าแพคเกจ

Note

เนื่องจากมีขนาดใหญ่สําหรับ Azure DevOps โมดูลแอปพลิเคชันถูกแบ่งออกเป็นสองแพคเกจแยกต่างหาก

แพคเกจ NuGet จุดประสงค์ ชื่อไลบรารีแอสเซทที่แชร์ของ LCS
Microsoft.Dynamics.AX.Platform.CompilerPackage คอมไพเลอร์ X++ (xppc.exe) และเครื่องมือการสร้างที่เกี่ยวข้อง PUXX/10.X.XX - เครื่องมือคอมไพเลอร์
Microsoft.Dynamics.AX.Platform.DevALM.BuildXpp การอ้างอิงโมดูลแพลตฟอร์มที่มีการคอมไพล์ซึ่งปรับให้เหมาะสมสําหรับการสร้าง PUXX/10.X.XX - การอ้างอิงการสร้างแพลตฟอร์ม
Microsoft.Dynamics.AX.Application1.DevALM.BuildXpp การอ้างอิงโมดูลแอปพลิเคชันที่คอมไพล์แล้ว (ตอนที่ 1) PUXX/10.X.XX - การอ้างอิงรุ่นของแอปพลิเคชัน 1
Microsoft.Dynamics.AX.Application2.DevALM.BuildXpp การอ้างอิงโมดูลแอปพลิเคชันที่คอมไพล์แล้ว (ตอนที่ 2) PUXX/10.X.XX - การอ้างอิงการสร้างแอปพลิเคชัน 2
Microsoft.Dynamics.AX.ApplicationSuite.DevALM.BuildXpp การอ้างอิงโมดูลชุดแอปพลิเคชันที่ถูกคอมไพล์แล้ว PUXX/10.X.XX - การอ้างอิงรุ่นของชุดแอปพลิเคชัน

สำคัญ

ขณะนี้คุณสามารถดาวน์โหลดแพคเกจ NuGet เหล่านี้จาก ไลบรารีสินทรัพย์ที่ใช้ร่วมกัน ใน Microsoft Dynamics Lifecycle Services (LCS) ได้ ลูกค้าทุกคนที่ดําเนินการในสภาพแวดล้อมแบบรวมในศูนย์การจัดการ Power Platform สามารถเข้าถึงไลบรารีสินทรัพย์ที่ใช้ร่วมกันใน LCS เพื่อดาวน์โหลดแอสเซทเหล่านี้ได้ กลไกการแจกแจงแบบแทนที่ที่ไม่จําเป็นต้องใช้ LCS กําลังจะมาเร็ว ๆ นี้ เราวางแผนที่จะอัปเดตบทช่วยสอนนี้เมื่อความสามารถดังกล่าวพร้อมใช้งาน

Note

แพคเกจ NuGet มีรายละเอียดเวอร์ชันที่ต้องเท่ากับหรือต่ํากว่าเวอร์ชันของสภาพแวดล้อมการเงินและการดําเนินงานเป้าหมายของคุณ เมื่อคุณใช้การอัปเดตคุณภาพกับสภาพแวดล้อมของคุณ ให้ดาวน์โหลดเวอร์ชันแพคเกจ NuGet ที่สอดคล้องกันเพื่อทําให้รุ่นของคุณสอดคล้องกัน หากคุณกําลังขยายแพลตฟอร์มเท่านั้น (ไม่มีการปรับแต่ง Application Suite) คุณอาจจําเป็นต้องใช้ CompilerPackage แพคเกจ และ Platform.DevALM.BuildXpp เท่านั้น อย่างไรก็ตาม ลูกค้าส่วนใหญ่ที่ขยายฟังก์ชันการทํางานของแอปพลิเคชันจําเป็นต้องมีห้าทั้งหมด

เผยแพร่แพคเกจไปยังตัวดึงข้อมูล Azure Artifacts

  1. ในโครงการ Azure DevOps ของคุณ ให้ไปที่วัตถุ>สร้างฟีด ตั้งชื่อตัวดึงข้อมูล (ตัวอย่างเช่น FinOpsNuGet) และเลือกสร้าง

  2. ดาวน์โหลดแพคเกจ NuGet จากไลบรารีแอสเซทที่แชร์ LCS ที่ตรงกับเวอร์ชันสภาพแวดล้อมเป้าหมายของคุณ

  3. ดาวน์โหลด nuget.exe และเผยแพร่แต่ละแพคเกจลงในตัวดึงข้อมูลของคุณ คุณอาจต้องการใช้ปุ่ม เชื่อมต่อกับตัวดึงข้อมูล ใน Azure DevOps เพื่อรับ URL แบบเต็มที่จะใช้ในตัวอย่างด้านล่าง เนื่องจากโครงการที่เก่ากว่าอาจมีโครงสร้าง URL ที่แตกต่างกัน

    nuget.exe push -Source "https://pkgs.dev.azure.com/<org>/<project>/_packaging/<feed>/nuget/v3/index.json" -ApiKey AZ Microsoft.Dynamics.AX.Platform.CompilerPackage.nupkg
    nuget.exe push -Source "https://pkgs.dev.azure.com/<org>/<project>/_packaging/<feed>/nuget/v3/index.json" -ApiKey AZ Microsoft.Dynamics.AX.Platform.DevALM.BuildXpp.nupkg
    nuget.exe push -Source "https://pkgs.dev.azure.com/<org>/<project>/_packaging/<feed>/nuget/v3/index.json" -ApiKey AZ Microsoft.Dynamics.AX.Application1.DevALM.BuildXpp.nupkg
    nuget.exe push -Source "https://pkgs.dev.azure.com/<org>/<project>/_packaging/<feed>/nuget/v3/index.json" -ApiKey AZ Microsoft.Dynamics.AX.Application2.DevALM.BuildXpp.nupkg
    nuget.exe push -Source "https://pkgs.dev.azure.com/<org>/<project>/_packaging/<feed>/nuget/v3/index.json" -ApiKey AZ Microsoft.Dynamics.AX.ApplicationSuite.DevALM.BuildXpp.nupkg
    
  4. ตรวจสอบว่ามีห้าแพคเกจที่ปรากฏในฟีด Azure DevOps Artifacts ของคุณ

ขั้นตอนที่ 2: เพิ่มไฟล์การกําหนดค่าไปยังที่เก็บของคุณ

ไฟล์การกําหนดค่าสองตัวควบคุมว่าจะคืนค่าแพคเกจ NuGet และมาจากไหน เพิ่มทั้งสองไฟล์ไปยังโฟลเดอร์ในที่เก็บของคุณ เช่นBuildPipeline/

nuget.config

ไฟล์นี้จะชี้ NuGet ไปยังฟีด Azure Artifacts ของคุณ แทนที่ค่าตัวแทนข้อความด้วยชื่อองค์กร โครงการ และตัวดึงข้อมูลของคุณ

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <clear />
    <add key="FinOpsNuGet" value="https://pkgs.dev.azure.com/<org>/<project>/_packaging/<feed>/nuget/v3/index.json" />
  </packageSources>
</configuration>

packages.config

ไฟล์นี้ระบุเวอร์ชันที่แน่นอนของแต่ละแพคเกจ NuGet อัปเดตหมายเลขเวอร์ชันเพื่อให้ตรงกับแพคเกจที่คุณเผยแพร่ไปยังตัวดึงข้อมูลของคุณ

<?xml version="1.0" encoding="utf-8"?>
<packages>
    <package id="Microsoft.Dynamics.AX.Platform.CompilerPackage" version="7.0.7367.146" targetFramework="net40" />
    <package id="Microsoft.Dynamics.AX.Platform.DevALM.BuildXpp" version="7.0.7367.146" targetFramework="net40" />
    <package id="Microsoft.Dynamics.AX.Application1.DevALM.BuildXpp" version="10.0.1935.21" targetFramework="net40" />
    <package id="Microsoft.Dynamics.AX.Application2.DevALM.BuildXpp" version="10.0.1935.21" targetFramework="net40" />
    <package id="Microsoft.Dynamics.AX.ApplicationSuite.DevALM.BuildXpp" version="10.0.1935.21" targetFramework="net40" />
</packages>

เคล็ดลับ

แพคเกจแพลตฟอร์ม (CompilerPackage และ ) ใช้Platform.DevALM.BuildXppแบบแผนเวอร์ชัน ในขณะที่แพคเกจแอปพลิเคชัน (7.0.XXXX.XX, Application1และ Application2) ใช้ApplicationSuite10.0.XXXX.XXแบบแผนเวอร์ชัน เวอร์ชันเหล่านี้เป็นอิสระและได้รับการอัปเดตด้วยการอัปเดตคุณภาพแต่ละครั้ง

ขั้นตอนที่ 3: สร้างไปป์ไลน์สร้าง

สร้างไฟล์ที่ชื่อว่า nightly-build.yml ในที่เก็บของคุณโดยใช้เทมเพลต YAML ด้านล่าง ไปป์ไลน์นี้จะคอมไพล์โค้ด X++ สร้างแพคเกจแบบรวมของ Power Platform และเผยแพร่อาร์ติแฟกต

  1. จาก Azure DevOps คลิกที่ ไปป์ไลน์ ในการนําทางด้านซ้าย จากนั้นคลิกปุ่ม สร้างไปป์ไลน์ใหม่ ตรงกลางของหน้า
  2. ในส่วน "รหัสของคุณอยู่ที่ไหน" ให้เลือก Azure Repos Git
  3. เลือกชื่อที่เก็บข้อมูลโค้ดของคุณ
  4. ภายใต้กําหนดค่าไปป์ไลน์ของคุณ เลือกไฟล์ YAML ของ Azure Pipelines ที่มีอยู่
  5. สุดท้ายให้เลือก 'nightly-build.yml' ที่สร้างขึ้นก่อนหน้านี้โดยใช้เทมเพลต YAML ด้านล่าง

ตัวแปรไปป์ไลน์

ไปป์ไลน์ใช้ตัวแปรเพื่อหลีกเลี่ยงการกําหนดหมายเลขเวอร์ชันและเส้นทางฮาร์ดโค้ด เมื่อคุณอัปเดตแพคเกจ NuGet สําหรับการอัปเดตคุณภาพใหม่ ให้เปลี่ยนเฉพาะตัวแปรเวอร์ชันเท่านั้น

ไปป์ไลน์ YAML แบบเต็ม

trigger: none

schedules:
  - cron: '0 4 * * *'  # Runs at 4:00 AM UTC every day
    displayName: 'Nightly Build'
    branches:
      include:
        - master
    always: true

pool:
  vmImage: 'windows-latest'

variables:
  # -- NuGet package versions --
  # Update these only when required if you have new Nuget package versions that you must use.  
  PlatformVersion: '7.0.7367.146'
  ApplicationVersion: '10.0.1935.21'

  # -- Paths --
  NuGetConfigPath: '$(Build.SourcesDirectory)/BuildPipeline'
  NuGetInstallDir: '$(Build.SourcesDirectory)/NuGets'
  MetadataPath: '$(Build.SourcesDirectory)/XppMetadata'
  SolutionPath: '$(Build.SourcesDirectory)/VS_Solutions/DataverseIntegration/DataverseIntegration.sln'

  # -- NuGet package folder names (using -ExcludeVersion for stable paths) --
  CompilerPackage: '$(NuGetInstallDir)/Microsoft.Dynamics.AX.Platform.CompilerPackage'
  PlatformBuildRef: '$(NuGetInstallDir)/Microsoft.Dynamics.AX.Platform.DevALM.BuildXpp'
  App1BuildRef: '$(NuGetInstallDir)/Microsoft.Dynamics.AX.Application1.DevALM.BuildXpp'
  App2BuildRef: '$(NuGetInstallDir)/Microsoft.Dynamics.AX.Application2.DevALM.BuildXpp'
  AppSuiteBuildRef: '$(NuGetInstallDir)/Microsoft.Dynamics.AX.ApplicationSuite.DevALM.BuildXpp'

  # -- Unified package output --
  UnifiedPackageOutput: '$(Build.ArtifactStagingDirectory)/UnifiedPackage'

stages:
  - stage: Build
    displayName: 'Compile X++ and Create Unified Package'
    jobs:
      - job: BuildXpp
        displayName: 'Build X++ and package'
        timeoutInMinutes: 120
        steps:
          # -------------------------------------------------------
          # Step 1: Install NuGet packages
          # -------------------------------------------------------
          - task: NuGetCommand@2
            displayName: 'Restore NuGet build packages'
            inputs:
              command: 'custom'
              arguments: >
                install "$(NuGetConfigPath)/packages.config"
                -ConfigFile "$(NuGetConfigPath)/nuget.config"
                -OutputDirectory "$(NuGetInstallDir)"
                -ExcludeVersion
                -Verbosity Detailed
                -Noninteractive

          # -------------------------------------------------------
          # Step 2: Build the X++ solution
          # -------------------------------------------------------
          - task: VSBuild@1
            displayName: 'Build X++ solution'
            inputs:
              solution: '$(SolutionPath)'
              vsVersion: '17.0'
              msbuildArgs: >
                /p:BuildTasksDirectory="$(CompilerPackage)/DevAlm"
                /p:MetadataDirectory="$(MetadataPath)"
                /p:FrameworkDirectory="$(CompilerPackage)"
                /p:ReferenceFolder="$(PlatformBuildRef)/ref/net40;$(App1BuildRef)/ref/net40;$(App2BuildRef)/ref/net40;$(AppSuiteBuildRef)/ref/net40;$(MetadataPath);$(Build.BinariesDirectory)"
                /p:ReferencePath="$(CompilerPackage)"
                /p:OutputDirectory="$(Build.BinariesDirectory)"
                /p:CompilerMetadata="$(Build.BinariesDirectory)"

          # -------------------------------------------------------
          # Step 3: Install NuGet 3.3.0 (required for packaging)
          # -------------------------------------------------------
          - task: NuGetToolInstaller@1
            displayName: 'Install NuGet 3.3.0 for packaging'
            inputs:
              versionSpec: '3.3.0'

          # -------------------------------------------------------
          # Step 4: Create the Power Platform unified package
          # -------------------------------------------------------
          - task: XppCreatePackage@3
            displayName: 'Create Power Platform unified package'
            inputs:
              XppToolsPath: '$(CompilerPackage)'
              CreateCloudPackage: true
              CloudPackagePlatVersion: '$(PlatformVersion)'
              CloudPackageAppVersion: '$(ApplicationVersion)'
              CloudPackageOutputLocation: '$(UnifiedPackageOutput)'
              DeployablePackagePath: '$(Build.ArtifactStagingDirectory)/AXDeployableRuntime.zip'

          # -------------------------------------------------------
          # Step 5 (Optional): Add Dataverse solutions to the package
          # -------------------------------------------------------
          # If you have Dataverse solutions (managed .zip files) that
          # should be deployed alongside your X++ code, add them to
          # the unified package. Each solution becomes part of the
          # same package that pac package deploy will process.

          - task: PowerPlatformToolInstaller@2
            displayName: 'Install Power Platform Build Tools'
            condition: and(succeeded(), ne(variables['DataverseSolutionsPath'], ''))

          - task: PowerShell@2
            displayName: 'Add Dataverse solutions to unified package'
            condition: and(succeeded(), ne(variables['DataverseSolutionsPath'], ''))
            inputs:
              targetType: 'inline'
              script: |
                $solutionsPath = "$(DataverseSolutionsPath)"
                $packageFolder = "$(UnifiedPackageOutput)"

                if (-not (Test-Path $solutionsPath)) {
                    Write-Host "No Dataverse solutions path specified or found. Skipping."
                    exit 0
                }

                Write-Host "Looking for Dataverse solution .zip files in: $solutionsPath"
                $solutions = Get-ChildItem -Path $solutionsPath -Filter "*.zip" -File

                if ($solutions.Count -eq 0) {
                    Write-Host "No solution .zip files found. Skipping."
                    exit 0
                }

                # The unified package uses a specific folder structure.
                # Dataverse solutions go under the PackageDeployer/solutions subfolder.
                $targetDir = Join-Path $packageFolder "PkgFolder"
                if (-not (Test-Path $targetDir)) {
                    New-Item -ItemType Directory -Path $targetDir -Force | Out-Null
                }

                foreach ($sol in $solutions) {
                    Write-Host "Adding solution: $($sol.Name)"
                    Copy-Item -Path $sol.FullName -Destination $targetDir
                }

                Write-Host "Added $($solutions.Count) Dataverse solution(s) to the unified package."

          # -------------------------------------------------------
          # Step 6: Zip the unified package
          # -------------------------------------------------------
          # PowerPlatformPackageDeploy expects a .zip file, not
          # an unzipped folder. Archive the unified package output
          # before publishing.
          - task: ArchiveFiles@2
            displayName: 'Zip unified package'
            inputs:
              rootFolderOrFile: '$(UnifiedPackageOutput)'
              includeRootFolder: false
              archiveType: 'zip'
              archiveFile: '$(Build.ArtifactStagingDirectory)/UnifiedPackage.zip'

          # -------------------------------------------------------
          # Step 7: Publish build artifacts
          # -------------------------------------------------------
          - task: PublishBuildArtifacts@1
            displayName: 'Publish unified package artifact'
            inputs:
              PathtoPublish: '$(Build.ArtifactStagingDirectory)/UnifiedPackage.zip'
              ArtifactName: 'UnifiedPackage'

          - task: PublishBuildArtifacts@1
            displayName: 'Publish deployable runtime package artifact'
            inputs:
              PathtoPublish: '$(Build.ArtifactStagingDirectory)/AXDeployableRuntime.zip'
              ArtifactName: 'LCSPackage'

ทําความเข้าใจไปป์ไลน์

ไปป์ไลน์มีเจ็ดขั้นตอนหลัก:

ขั้นตอน งาน จุดประสงค์
1 NuGetCommand@2 คืนค่าคอมไพเลอร์และแพคเกจอ้างอิงจากตัวดึงข้อมูล Azure Artifacts ของคุณ ค่า -ExcludeVersion สถานะจะลบหมายเลขเวอร์ชันออกจากชื่อโฟลเดอร์ ดังนั้นเส้นทาง MSBuild จะยังคงอยู่ในความเสถียรในการอัปเดตเวอร์ชัน
2 VSBuild@1 คอมไพล์โซลูชัน X++ โดยใช้ MSBuild ด้วยอาร์กิวเมนต์ที่ชี้ไปยังตําแหน่งแพคเกจ NuGet สําหรับคอมไพเลอร์ การอ้างอิงแพลตฟอร์ม และการอ้างอิงแอปพลิเคชัน
3 NuGetToolInstaller@1 ติดตั้ง NuGet 3.3.0 ซึ่งจําเป็นต้องใช้ในงานบรรจุภัณฑ์ เวอร์ชัน 3.4 และใหม่กว่าใช้การกําหนดเวอร์ชันเชิงความหมายที่ไม่เข้ากันกับรูปแบบแพคเกจที่ปรับใช้ได้
4 XppCreatePackage@3 สร้างทั้งแพคเกจที่สามารถปรับใช้ได้แบบดั้งเดิม (.zip) และแพคเกจรวมของ Power Platform แพคเกจแบบรวมเป็นรูปแบบที่จําเป็นสําหรับการปรับใช้กับสภาพแวดล้อมแบบรวมผ่านpac package deploy
5 PowerShell@2 (ไม่บังคับ) เพิ่มโซลูชัน Dataverse .zip ไฟล์ไปยังแพคเกจแบบรวมเพื่อให้การกําหนดค่า X++ และโซลูชัน Dataverse ถูกปรับใช้ร่วมกันเป็นหน่วยเดียว
6 ArchiveFiles@2 Zip โฟลเดอร์แพคเกจแบบรวมเป็น .zip ไฟล์ งาน PowerPlatformPackageDeploy จําเป็นต้องมีไฟล์เป็น .zip ข้อมูลป้อนเข้า ไม่ใช่โฟลเดอร์ที่คลายซิป
7 PublishBuildArtifacts@1 เผยแพร่รูปแบบแพคเกจทั้งสองเป็นวัตถุไปป์ไลน์สําหรับไปป์ไลน์การเผยแพร่ปลายทาง

ขั้นตอนที่ 4: รวมถึงโซลูชัน Dataverse (ไม่บังคับ)

ประโยชน์หลักของสภาพแวดล้อมแบบรวมคือการกําหนดค่า X++ และโซลูชัน Dataverse ของการเงินและการดําเนินงานสามารถรวมเข้ากับแพคเกจที่ปรับใช้ได้แพคเกจเดียว ซึ่งหมายความว่าไปป์ไลน์เผยแพร่ของคุณใช้คําสั่งเดียว pac package deploy เพื่อปรับใช้ทุกอย่าง

เมื่อต้องการรวมโซลูชัน Dataverse ในการสร้างคืนของคุณ:

  1. เพิ่มโซลูชันที่มีการจัดการ Dataverse .zip ไฟล์ไปยังโฟลเดอร์ในที่เก็บของคุณ (ตัวอย่างเช่น DataverseSolutions/)

  2. DataverseSolutionsPathตั้งค่าตัวแปรในไปป์ไลน์ของคุณ:

    variables:
      DataverseSolutionsPath: '$(Build.SourcesDirectory)/DataverseSolutions'
    
  3. ขั้นตอนที่ 5 เป็นทางเลือกของไปป์ไลน์จะเลือกไฟล์ .zip ใด ๆ จากเส้นทางนั้นโดยอัตโนมัติและเพิ่มลงในแพคเกจแบบรวม

เมื่อไปป์ไลน์เผยแพร่เรียกใช้ pac package deployในภายหลัง จะประมวลผลแพคเกจแบบรวมทั้งหมด การปรับใช้ทั้งแพคเกจรันไทม์ X++ กับรันไทม์การเงินและการดําเนินการ และโซลูชัน Dataverse ไปยังสภาพแวดล้อม Dataverse

Note

ถ้าคุณไม่มีโซลูชัน Dataverse ให้ปล่อย DataverseSolutionsPath ตัวแปรว่างไว้หรือลบออก การตรวจสอบเงื่อนไขของขั้นตอนที่ 5 จะข้ามขั้นตอน Dataverse โดยอัตโนมัติ

ขั้นตอนที่ 5: อัปเดตเวอร์ชันแพคเกจสําหรับการอัปเดตคุณภาพ

เมื่อคุณใช้การอัปเดตคุณภาพใหม่ (PQU) กับสภาพแวดล้อมของคุณ ให้อัปเดตไปป์ไลน์การสร้างให้ตรงกัน:

  1. ดาวน์โหลดแพคเกจ NuGet ใหม่จากไลบรารีแอสเซทที่แชร์ของ LCS
  2. เผยแพร่เวอร์ชันใหม่ไปยังตัวดึงข้อมูล Azure Artifacts ของคุณ
  3. อัปเดต packages.config ด้วยหมายเลขเวอร์ชันใหม่
  4. อัปเดตตัวแปร PlatformVersion ไปป์ไลน์และ ApplicationVersion เพื่อให้ตรงกัน

เคล็ดลับ

ทําให้หมายเลขเวอร์ชันของคุณ packages.config ซิงค์กับ PlatformVersion ตัวแปรและ ApplicationVersion ไปป์ไลน์อยู่เสมอ ไฟล์ packages.config ควบคุมที่แพคเกจ NuGet จะถูกคืนค่า ในขณะที่ตัวแปรไปป์ไลน์บอก XppCreatePackage งานว่าแพลตฟอร์มใดและเมตาดาต้าเวอร์ชันแอปพลิเคชันที่จะประทับลงในแพคเกจแบบรวม

แก้ไข ปัญหา

ปัญหา การแก้ไขปัญหา
การสร้างล้มเหลวโดยมีการอ้างอิงที่ขาดหายไป ตรวจสอบให้แน่ใจว่าคุณเผยแพร่แพคเกจ NuGet ทั้งห้ารายการไปยังตัวดึงข้อมูลอาร์ติแฟกต์ของคุณ และเวอร์ชันที่ตรงกันpackages.config หากคุณเป็นเพียงการขยายแพลตฟอร์ม คุณยังคงต้องการ Application1Application2และ ApplicationSuite สําหรับการแก้ปัญหาการอ้างอิง
XppCreatePackage ล้มเหลวเมื่อเวอร์ชันไม่ตรงกัน ค่า CloudPackagePlatVersion และ CloudPackageAppVersion ต้องตรงกับเวอร์ชันแพคเกจ NuGet ที่คุณคืนค่า
การคืนค่า NuGet ล้มเหลวด้วย 401 บัญชีบริการสร้างของไปป์ไลน์ของคุณต้องการการเข้าถึงตัว อ่าน ไปยังตัวดึงข้อมูล Azure Artifacts ไปที่สิทธิ์>ตัวดึงข้อมูล>วัตถุ และเพิ่มบริการรุ่น
การทําแพคเกจล้มเหลวโดยมีข้อผิดพลาดการกําหนดรุ่นเชิงความหมาย ตรวจสอบให้แน่ใจว่าขั้นตอนที่ 3 ติดตั้ง NuGet 3.3.0 เวอร์ชัน 3.4 และรุ่นที่ใหม่กว่าแนะนําการกําหนดเวอร์ชันความหมายที่เข้ากันไม่ได้กับการสร้างแพคเกจที่ปรับใช้ได้
fnomoduledefinition.json file not found เส้นทาง CloudPackageOutputLocation อาจไม่ถูกต้อง หรือ XppToolsPath อาจไม่ชี้ไปยังแพคเกจคอมไพเลอร์ที่ถูกต้อง ตรวจสอบเส้นทางตัวแปรของคุณ

ขั้นตอนถัดไป