我有一个像这样定义的 metarunner:
<?xml version="1.0" encoding="UTF-8"?>
<meta-runner name="Fancy Pancy">
[...]
<build-runners>
<runner name="Fancy Pancy" type="jetbrains_powershell">
<parameters>
[...]
<param name="jetbrains_powershell_scriptArguments"><![CDATA-Optional:%SomeOptMetarunnerParam%
-Required:%SomeReqMetarunnerParam%]]></param>
<param name="jetbrains_powershell_script_code"><![CDATA[#Requires -Version 7
[CmdletBinding()]
param (
[string] $Optional,[string] $Required
)
[...]
我的问题如下:如果用户将可选参数保留为空,PowerShell 执行认为“-Required:%SomeReqMetarunnerParam”是“可选”参数的参数值,最终失败,因为“必需”参数的值" 参数丢失。如果用户确实为可选参数提供了值,则一切都会按预期进行。
我通过如下重新定义参数来解决这个问题(注意引号):
<param name="jetbrains_powershell_scriptArguments"><![CDATA-Optional:'%SomeOptMetarunnerParam%'
-Required:'%SomeReqMetarunnerParam%']]></param>
这是可行的,但是,引号成为值的一部分。所以我必须在 PowerShell 脚本的开头修剪它们,这显然是一种糟糕的风格,而且根本不是干净的代码。
有什么技巧可以解决这个问题吗?