azure - 如何使用 Azure PowerShell 在 Azure Pipeline 中分配程序集名称?
问题描述
我正在将其他人编写的 PowerShell 脚本转换为 Azure Build Pipeline。我只是在学习 Azure Pipelines。当我运行管道时,我收到以下错误消息:
无法设置“AssemblyName”,因为只能将字符串用作设置 XmlNode 属性的值
问题是我们必须签署程序集,以便我们可以在生成的应用程序(即 WPF 应用程序)上包含认证。
我试过搜索错误,但只得到与 .NET Reflection 相关的结果。这是 Azure PowerShell 管道任务,使用旧 TFS 构建中的代码对程序集进行签名。我通过 include 做了一个替换$(Build.BuildId)
,除了代码是 TFS 构建中使用的代码。这是任务的代码:
- task: AzurePowerShell@5
inputs:
azureSubscription: 'Visual Studio Enterprise(/* removed */)'
azurePowerShellVersion: LatestVersion
ScriptType: 'InlineScript'
Inline: |
$config = ls -recurse "ACDC.csproj" | select -First 1
$xml = [xml]""
$xml.PreserveWhitespace = $true
$xml.Load($config)
$xml.Project.PropertyGroup |? AssemblyName |% {$_.AssemblyName=$env:Binaries}
$xml.Save($config)
$files = Get-ChildItem -Recurse AssemblyInfo.cs
foreach ($file in $files){
$content = Get-Content -Encoding UTF8 $file
$content = $content -replace '(?<=Assembly(File)?Version\(")(\d+)\.(\d+)\.(\d+)(\.\d+)',"`$2.`$3.$(Build.BuildId))`$5";
Set-Content $file -Encoding UTF8 -Value $content
}
解决方案
无法设置“AssemblyName”,因为只能将字符串用作设置 XmlNode 属性的值
我可以重现这个问题。这个问题的根本原因是你没有设置变量名: Binaries。
要解决此问题,您可以尝试以下示例:
Yaml 示例:
variables:
- name: Binaries
value: test
pool:
vmImage: windows-latest
steps:
- task: AzurePowerShell@5
displayName: 'Azure PowerShell script: InlineScript'
inputs:
azureSubscription: kevin0322
ScriptType: InlineScript
Inline: |
$config = ls -recurse "WPFRssFeedReader.csproj" | select -First 1
$xml = [xml]""
$xml.PreserveWhitespace = $true
$xml.Load($config)
$xml.Project.PropertyGroup |? AssemblyName |% {$_.AssemblyName=$env:Binaries}
$xml.Save($config)
$files = Get-ChildItem -Recurse AssemblyInfo.cs
foreach ($file in $files){
$content = Get-Content -Encoding UTF8 $file
$content = $content -replace '(?<=Assembly(File)?Version\(")(\d+)\.(\d+)\.(\d+)(\.\d+)',"`$2.`$3.$(Build.BuildId))`$5";
Set-Content $file -Encoding UTF8 -Value $content
}
preferredAzurePowerShellVersion: 3.1.0
经典编辑器:
您需要在变量选项卡中定义变量。
推荐阅读
- image-processing - 网络摄像头通常在以较低分辨率采样之前在固件/硬件中进行过滤吗?
- python-3.x - 无法使用 Python 3.8 在 Ubuntu 18.04 上创建 virtualenv
- python - 应用程序启动失败,因为它无法找到或加载 Qt 平台插件“windows”
- mongodb - 如何在mongodb的管道阶段删除字段名
- asp.net-core - 如何在 .NetCore API 中验证从一个应用程序在不同应用程序上发出的 AntiForgeryToken?
- reactjs - React-Native Redux reducer switch 语句忽略类型
- python - 如何修复无法定位元素错误
- swiftui - Swift UI 为什么我有 2 个后退按钮?
- javascript - 为什么在这个 TOTP 函数中有时会得到 5 位而不是 6 位?
- git - Magit:如何进行章鱼合并?