SSIS中的VB函数出错,但VisualStudio中出现错误

时间:2014-05-27 20:34:13

标签: vb.net ssis

我有一些VB.Net代码,我试图添加到SSIS包中。代码在VisualStudio 2012中运行良好,当我编译它时没有错误,可执行文件也运行。当我将代码插入到SSIS包脚本任务中并复制/粘贴我的代码时,我的一个函数出错:

'任何'不是' System.Collections.Generic.IEnumerable(Of String)'的成员。

我完全复制并粘贴了代码的主体,并插入了一个Imports行:

#Region "Imports"
Imports System
Imports System.Data
Imports System.Math
Imports System.IO 'Added this one Imports
Imports Microsoft.SqlServer.Dts.Runtime
#End Region

<Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute()> _
<System.CLSCompliantAttribute(False)> _
Partial Public Class ScriptMain
Inherits Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase


Public Sub Main()
    Dim sDirectoryRoot As String = "\\Server\Drive$\SubFolder\SubFolder2\"
    Dim dirList As New DirectoryInfo(sDirectoryRoot)
    ListFiles(dirList)
    Dts.TaskResult = ScriptResults.Success 'left this line from SSIS default
End Sub

Public Sub ListFiles(ByVal dirList As DirectoryInfo)
Dim bEmpty As Boolean = False
[...] bunch of code with no errors.  Actual function call below where clientdir is a directory path
bEmpty = IsDirectoryEmpty(clientdir.ToString)

End Sub

Public Function IsDirectoryEmpty(ByVal path As String) As Boolean
    Return Not (Directory.EnumerateFileSystemEntries(path).Any())
End Function

Directory.EnumerateFileSystemEntries(path)。任何&#39; Any&#39;不是&#39; System.Collections.Generic.IEnumerable(Of String)&#39;的成员。错误。我无法弄清楚它在Visual Studio中运行良好的原因,但是当我使用脚本任务编辑器(它启动另一个Visual Studio实例)中的“编辑脚本”按钮时,它会出错。

1 个答案:

答案 0 :(得分:1)

Any是一种扩展方法,与所有扩展方法一样,要求您导入相应的命名空间。事实上,它是System.Linq.Enumerable.Any方法,因此您必须导入System.Linq命名空间。这可能是在非SSIS项目中默认在项目级别完成的。请注意,您还必须引用System.Core.dll程序集。