问题标签 [invoke-build]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
powershell - 位置参数之前的动态开关可能无法按预期工作
这是演示问题的代码。如果提供程序是 ,则cmdletSet-Location
具有动态开关。ReadOnly
FileSystem
通常,开关参数在命令中的位置无关紧要。这不是动态切换的情况。案例 2 失败并出现以下错误:
发生什么了?我认为在创建动态参数的那一刻,尚不知道这ReadOnly
是开关。因此,PowerShell 将其视为带有参数的常规参数C:\
,C:\
因此不被视为位置参数。结果,Get-ChildItem
认为未指定位置并使用当前的env:
. 提供者Environment
不提供动态开关ReadOnly
,因此最终命令由于语法不正确而失败,即使它有些正确(如果当前提供者是,则相同的命令有效FileSystem
)。
问题:
- 我对问题的理解正确吗?
- 此功能是否记录在某处?
- 有什么解决方法吗?
最后一个问题更多的是关于使用动态参数开发的用户命令。该问题最初被注意到并描述为Invoke-Build Issue #4。目前这个问题只是记录在案。但我仍然对解决方法感兴趣。
结论
- 存在所描述的问题。
- 它没有这样记录。
- 解决方法,每种都解决了问题:
- 在位置参数参数之后指定动态开关
- 明确指定动态开关参数:
-ReadOnly:$true
- 不要将位置参数与动态开关一起使用,即指定参数名称。
打开错误:960194
powershell - 如何在 PowerShell 中使用 Invoke-Build 创建动态构建任务
使用 Invoke-Build 我正在尝试创建动态构建任务,该方法的示例如下。其中,以与经典 UNIX make 工具类似的方式,如果输入文件比输出文件新,将为每个输入文件生成一个输出文件。
它通过动态生成一组增量任务然后调用这些任务来实现这一点。
增量任务的生成概述如下:
除了所需其他功能的范围之外,这似乎确实运作良好。无论我在哪里尝试在任务 Task-Thing- 执行时获取 BuildThing.ps1 脚本,Invoke-Build 都会抱怨 BuildThing 未被识别为:
“cmdlet、函数、脚本文件或可运行程序的名称。”
如果我在运行 Invoke-Build 之前点源相关文件,一切都会按预期工作。
这似乎是一个范围界定问题 - 但目前尚不清楚如何以直接的方式解决它。
如果我尝试以静态方式将 BuildThing.ps1 包含在循环之外,它似乎确实被调用,正如调试所证实的那样,但似乎不在动态任务执行的范围内。