SSIS ForEach 来自变量枚举器,使用 C# 创建的列表 - 变量中的对象不包含枚举器

SSIS ForEach From Variable Enumerator, list created with C# - The object in the variable does not contain an enumerator

我一直在努力重构一个 SSIS 包,它将一堆日志文件复制到我们网络上的一个文件夹中,检查目标文件夹中的所有文件,然后删除任何超过我们保留政策的文件.看起来应该一切正常,但出现上述错误。

大纲: Object 类型的变量 "dailyFilesToDelete",由 ForEach 文件循环内的脚本任务填充。 我简化了我的代码以添加我创建的单个文件来测试这个新包并尝试找到问题的核心。

var fileListDelete = new List<string>();
fileListDelete.Add(@"Q:\xpcttvcpc_live_Full_201912050000.bak");
Dts.Variables["dailyFilesToDelete"].Value = fileListDelete.GetEnumerator();
Dts.TaskResult = (int)ScriptResults.Success;

下一步是失败的 Foreach 循环。

枚举器:来自变量枚举器的 Foreach

枚举变量:User::dailyFilesToDelete

变量映射:User::deleteFileName

我怀疑问题出在我如何将我的字符串列表传递到 dailyFilesToDelete 中。我最初是传递列表本身,一旦我看到 "variable does not contain an enumerator" 错误,我确信添加 GetEnumerator 调用会修复它。

我认为您的问题是将枚举器结果分配给变量。试试看

Dts.Variables["dailyFilesToDelete"].Value = fileListDelete;

在幕后,SSIS Foreach 枚举器将调用枚举器方法来实现奇迹。