我有一些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实例)中的“编辑脚本”按钮时,它会出错。
答案 0 :(得分:1)
Any
是一种扩展方法,与所有扩展方法一样,要求您导入相应的命名空间。事实上,它是System.Linq.Enumerable.Any
方法,因此您必须导入System.Linq
命名空间。这可能是在非SSIS项目中默认在项目级别完成的。请注意,您还必须引用System.Core.dll程序集。