我正面临着BIML的一个奇怪问题 . 我正在使用BIML创建SSIS包,我在包中有很少的脚本任务 . 它们是非常简单的脚本任务,下面是一个例子 .

string filePath = Dts.Variables["User::SrcFile"].Value.ToString();
string folderName = Path.GetDirectoryName(filePath);
Dts.Variables["User::Error_File"].Value = folderName + "\\Errors\\" + "LoadErr.csv";

BIML生成包很好,但是脚本任务仅在我在设计器中打开脚本任务,单击编辑脚本然后关闭而不进行任何更改时才有效 . 如果我立即运行包,它会抛出以下错误 .

无法将“System .__ ComObject”类型的COM对象转换为接口类型“Microsoft.SqlServer.Dts.Runtime.Wrapper.IDTSVariables100”

在编辑器中打开和关闭脚本任务,修复我无法理解的内容 . 我有大约50个包,每个包有4个脚本任务,所以我无法在每个包中打开每个脚本任务以使其工作 .

我正在使用Visual Studio Prof 2015和BIMLExpress版本5.0.61915.0以及.NET framework 4.7 . 没有任何可能的解决方案,这个问题在我的大部分时间里都吃光了 .

另一件有趣的事情是我在一台临时PC上安装了SSDT 2015(VS 2015 Shell)并且在那里工作正常,不幸的是我无法使用第二台PC进行开发 . 我比较了两个包,我发现的唯一区别是 BinaryItem 元素的值 .

为了进一步测试,我已经将脚本任务保持在最低限度,问题是由使用Dts.Variables引起的 . 我不明白是什么导致了这种奇怪的行为 . 任何帮助是极大的赞赏 . 提前致谢 . 小号