Visual Studio 2013中VB脚本任务Enum 'ScriptResults'冲突问题求助
解决SSIS VB脚本任务中ScriptResults枚举冲突问题
嘿,这个问题我之前帮不少开发者排查过,本质就是SSIS脚本任务的默认模板代码和你手动添加的枚举撞车了!
问题根源
当你在Visual Studio 2013里创建SSIS的VB脚本任务时,系统会自动在ScriptMain类中生成一个ScriptResults枚举,用来向SSIS引擎报告脚本的执行状态,它的默认代码长这样:
Enum ScriptResults Success = 0 Failure = 1 End Enum
这个枚举是脚本任务正常工作的必要部分——SSIS依赖它判断任务是否执行成功。如果你自己又手动定义了一个同名的ScriptResults枚举,就会触发“enum 'ScriptResults' and enum 'ScriptResults' conflict in class 'ScriptMain'”的编译错误。
分步解决方案
保留默认枚举,删除自定义的重复枚举
绝对不能删除系统自动生成的那个ScriptResults,否则脚本无法向SSIS返回执行状态,会导致任务执行异常。你需要找到自己手动添加的同名枚举并删除它。处理删除后的遗留问题
如果你删除自定义枚举后出现新错误,大概率是代码里还在引用这个自定义枚举的成员,这时候分两种情况处理:- 如果这个自定义枚举是用来标记业务逻辑状态(比如文件复制成功/失败):重新给你的枚举起个独特的名字,比如
FileOperationResults,然后替换代码里的所有引用。
示例修改:' 原来的自定义枚举(已删除) ' Enum ScriptResults ' FileCopied = 2 ' FileMissing = 3 ' End Enum ' 替换为新枚举 Enum FileOperationResults FileCopied = 2 FileMissing = 3 End Enum ' 代码里的引用也要改 If FileExists Then Return FileOperationResults.FileCopied Else Return FileOperationResults.FileMissing End If - 如果是误写了重复的枚举:直接删除自定义的,代码里如果需要返回任务状态,直接用默认的
ScriptResults.Success或ScriptResults.Failure即可。
- 如果这个自定义枚举是用来标记业务逻辑状态(比如文件复制成功/失败):重新给你的枚举起个独特的名字,比如
内容的提问来源于stack exchange,提问作者zack hood
相关产品推荐
相关产品推荐

