在使用 DevOps 管道上传到 SPO 应用程序目录之前修改 .sppkg 文件的内容

Modify content of .sppkg file before uploading to SPO app catalog using DevOps pipelines

我想 运行 通过 DevOps 构建管道一次 SPFx web 部件,并让相同的工件可部署到任何环境。

目前我有一个设置,其中代码中的 #{PlaceHolders}# 将被 DevOps 发布管道中的 Replace Tokens 任务替换。为此,我添加了一个 Extract activity 来解压 .sppkg 包,之后我替换生成的 .zip 文件中的标记,然后我将文件归档回 .sppkg 包。

我 运行 遇到的问题是,SharePoint 似乎不喜欢我篡改它的 .sppkg 文件。在应用程序目录中,每当我替换令牌时,我都会在应用程序包错误消息列中得到这个:

程序包包含错误数量的关系类型'http://schemas.microsoft.com/sharepoint/2012/app/relationships/package-manifest'. Expected: '1'. Actual: '0'.

感谢任何关于如何安全修改 .sppkg 包的线索,或者我如何在解决方案打包后将环境变量实现到我的 SFPx Web 部件中的任何线索。

目标是能够将同一个构建提升到 Azure DevOps 中的后续环境。

编辑提供发布管道详细信息

使用标准的提取文件和存档文件任务,这些是使用的设置:

存档模式: $(System.DefaultWorkingDirectory)/MyProjectFolder/drop/SharePoint/solution/my-package.sppkg

目标文件夹: $(System.DefaultWorkingDirectory)/MyProjectFolder/drop/SharePoint/solution/extracts

要存档的根文件夹或文件: $(System.DefaultWorkingDirectory)/MyProjectFolder/drop/sharepoint/solution/extracts

要创建的存档文件: $(System.DefaultWorkingDirectory)/MyProjectFolder/drop/sharepoint/solution/my-package.sppkg

我也在本地构建后尝试在本地修改 .sppkg 包,但结果相同。所以我想可能会有一个签名被添加到正在寻找长度的 .sppkg 包中,如果更改,它可能会被拒绝?

我 运行 使用 PowerShell“Compress-Archive”遇到了同样的问题,但是当我切换到 7zip 时,我能够提取 sppkg,替换占位符,重新压缩并且应用程序目录接受了新的 sppkg。

通过将 Microsoft.PowerShell.Archive 更新到 > 1.2.3.0 也解决了我的“压缩存档”问题,请参阅:link