【发布时间】:2015-03-06 20:21:23
【问题描述】:
我在 Visual Studio 2014 中有一个 SSIS 包,如果有任何记录穿过第 3 方转换的特定路径,我想在脚本组件中引发错误。我想要在 C# 2012 中执行此操作,但 FireError 方法给出了错误:
'Microsoft.SqlServer.Dts.Pipeline.Wrapper.IDTSComponentMetaData100.FireError(int, string, string, string, int, out bool)'的最佳重载方法匹配有一些无效参数
当我尝试这样做时:
bool fireAgain = false;
IDTSComponentMetaData100 myMetaData;
myMetaData = this.ComponentMetaData;
myMetaData.FireError(0, "Script Component", "Invalid Records", string.Empty, 0, ref fireAgain);
但如果我将 FireError 更改为 FireInformation,它会编译并运行——当然,除了我需要引发错误,而不是信息事件。
另外,如果我使用 Visual Basic 而不是 C#:
Dim pbFireAgain As Boolean = False
Dim myMetaData As IDTSComponentMetaData100
myMetaData = Me.ComponentMetaData
myMetaData.FireError(0, "Script Component", "Invalid Records", String.Empty, 0, pbFireAgain)
我的意思是,字面上完全一样的东西,但用不同的语言,它工作得很好。 VB 也适用于 FireInformation。
显然我可以通过使用 VB 来解决我当前的问题,但是有人可以告诉我为什么会这样吗?这似乎是 C# 的一个特定问题。作为证据,我们在 MSDN 上有这个:https://msdn.microsoft.com/en-us/library/ms136031.aspx
FireError 的脚本组件版本是 唯一 八个没有 C# 和 VB 版本的示例(日志记录的格式很差,但它们都是那里)。
我想知道是否有一个调试器配置可能会以奇怪的方式运行 C# 代码,正如this stackoverflow question 回答的那样,但我得到的错误是在设计时——Visual Studio 会出现早期的“无效参数”错误在我编译之前,它就知道有问题了。
想法?
【问题讨论】:
标签: c# vb.net visual-studio ssis sql-server-2012