我对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
}