我对SSIS软件包的编写有点陌生,并且在我的SSIS软件包中有嵌套循环,一个是将所有文件夹循环到一个位置,而内部循环则循环遍历每个文件夹中的所有文件。

在文件夹级循环中,我的第一个任务是脚本任务,其中我将所有文件路径提取到对象变量中,该对象变量的包级别范围为字符串数组,如下所示。

string targetDirectory = Convert.ToString(Dts.Variables["SourceFolderLocation"].Value);
string[] fileEntries = Directory.GetFiles(targetDirectory, "*.pdf");
Dts.Variables["FileList"].Value = fileEntries;


Dts.Variables [“ FileList”]。Value是我的对象变量,具有包级别范围。

现在,我的要求是在文件夹级循环的脚本任务中,首先重置该对象变量,然后将新文件列表设置到该对象变量中,就好像我遇到访问文件夹的任何异常一样,它不应处理先前文件夹的文件。

我的问题是如何在脚本任务C#代码中重置对象变量?因此,它不会再次处理先前文件夹的文件,并且我也不会得到枚举数,不应包含空值错误。

任何帮助将不胜感激。

最佳答案

如果我的理解正确,则应该可以在调用string[]以对其进行“重置”之前将其设置为新的GetFiles

string[] fileEntries = new string[] {};
try {
    string targetDirectory = Convert.ToString(Dts.Variables["SourceFolderLocation"].Value);
    fileEntries = Directory.GetFiles(targetDirectory, "*.pdf");
    Dts.Variables["FileList"].Value = fileEntries;
}
catch (Exeception e) {
    // handle exception
}

10-06 15:37