You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell数组拼接在Visual Studio预生成事件触发op_Addition缺失报错

报错原因

这个错误出现的核心原因是:当Get-ChildItem执行后没有找到匹配的文件时,返回的结果不是空数组,而是$null;如果仅找到1个匹配文件,返回的是单个FileInfo对象,而非单元素数组。
此时你直接用+运算符对这些非数组类型的结果做拼接时,PowerShell找不到对应类型的加法实现(也就是报错里提到的op_Addition方法),就会抛出异常。
在Visual Studio预生成事件场景下,默认执行目录、项目结构差异都可能导致某个配置文件不存在,触发这个问题。

解决方法

下面提供两种可行的修复方案:

方案1:强制所有查询结果返回数组

在每个Get-ChildItem外层包裹@(),强制将查询结果转为数组类型,就算没有匹配结果也会返回空数组,数组相加不会报错。
修改后的代码如下:

$files_AppConfig = @(Get-ChildItem -Path .\App.config -Recurse)
$files_WatcherConfig = @(Get-ChildItem -Path .\WatcherServiceConfig.xml -Recurse)
$files_StrControles = @(Get-ChildItem -Path .\Web.config -Recurse)
$files = $files_AppConfig + $files_WatcherConfig + $files_StrControles

ForEach($file in $files)
{   
    #Do some stuff
}

方案2:简化查询逻辑,一次性匹配所有目标文件

不需要分开查询三个文件再加总,直接用-Include参数一次性指定所有要匹配的文件名,代码更简洁,也不会出现类型相加的问题:

$files = Get-ChildItem -Path .\ -Recurse -Include App.config, WatcherServiceConfig.xml, Web.config

ForEach($file in $files)
{   
    #Do some stuff
}

内容的提问来源于stack exchange,提问作者Foxhunt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 11:24:01