C# 如何修复Biml内置SSIS脚本任务的失败任务:不支持此类接口

C# 如何修复Biml内置SSIS脚本任务的失败任务:不支持此类接口,c#,ssis,biml,C#,Ssis,Biml,我一直在测试通过Biml for SSIS包创建脚本任务。 我希望能够在本地成功地执行/测试包 我无法从本地开发环境中执行项目的包,因为它们都有错误,下面的错误相同 问题: 错误:脚本任务1处的0x0,脚本任务:无法将类型为“System.\u ComObject”的COM对象强制转换为接口类型“Microsoft.SqlServer.Dts.Runtime.Wrapper.IDTSVariables100”。此操作失败,因为对IID为“{2CD38B23-6C17-4025-A8B6-D2E4

我一直在测试通过Biml for SSIS包创建脚本任务。 我希望能够在本地成功地执行/测试包

我无法从本地开发环境中执行项目的包,因为它们都有错误,下面的错误相同

问题:
错误:脚本任务1处的0x0,脚本任务:无法将类型为“System.\u ComObject”的COM对象强制转换为接口类型“Microsoft.SqlServer.Dts.Runtime.Wrapper.IDTSVariables100”。此操作失败,因为对IID为“{2CD38B23-6C17-4025-A8B6-D2E497DD1DDC}”的接口的COM组件的QueryInterface调用由于以下错误而失败:不支持此类接口(HRESULT的异常:0x80004002(E_NOINTERFACE))。
在Microsoft.SqlServer.Dts.Runtime.Variables.get_项(对象索引)中
在ScriptMain.Main()处
错误:脚本任务1处的0x6:脚本返回了失败结果。
任务失败:脚本任务1

在完成了从Visual Studio到该服务器(SQL server 2016)上的SSIS目录(SSIDB)的项目部署后,我能够从另一台服务器成功执行这些包

我对AssemblyInfo和ScriptMain使用了以下引用:

  • Varigence文档代码示例:
  • BimlScript代码示例:

运用系统反思;
使用System.Runtime.CompilerServices;
//
//有关部件的一般信息通过以下方式控制
//属性集。更改这些属性值以修改信息
//与程序集关联的。
//
[大会:大会名称(“ST_C41AD4BF47544C49AD46F440163FEAE.csproj”)]
[组装:组装说明(“”)]
[程序集:程序集配置(“”)]
[大会:大会公司(“Varigence”)]
[组装:组装产品(“ST_C41AD4BF47544C49AD46F440163FEAE.csproj”)]
[大会:大会版权所有(“版权@Varigence 2013”)]
[组装:组装商标(“”)]
[大会:大会文化(“”)
//
//程序集的版本信息由以下四个值组成:
//
//主要版本
//次要版本
//建筑编号
//修改
//
//可以指定所有值,也可以默认版本号和内部版本号
//通过使用如下所示的“*”:
[汇编:汇编版本(“1.0.*)]
使用制度;
使用系统数据;
使用Microsoft.SqlServer.Dts.Runtime;
使用System.Windows.Forms;
//如果为SSI2012,请使用以下行:
[Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute]
//如果是早期版本,请使用下一行而不是上一行:
//[System.AddIn.AddIn(“ScriptMain”,Version=“1.0”,Publisher=”“,Description=”“)]
公共部分类ScriptMain:Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
{
枚举脚本结果
{
Success=Microsoft.SqlServer.Dts.Runtime.dtsesecresult.Success,
Failure=Microsoft.SqlServer.Dts.Runtime.dtsesecresult.Failure
};
公共图书馆
{
尝试
{
int totalInsertedRowsToDestination=(int)Dts.Variables[“User::totalInsertedRowsToDestination”]值;
int rowCountNew=(int)Dts.Variables[“User::rowCountNew”].Value;
int totalUpdatedRowsToDestination=(int)Dts.Variables[“User::totalUpdatedRowsToDestination”].Value;
int rowCountChanged=(int)Dts.Variables[“User::rowCountChanged”].Value;
int totalUnChangedRowsToDestination=(int)Dts.Variables[“User::totalUnChangedRowsToDestination”].Value;
int rowCountUnchanged=(int)Dts.Variables[“User::rowCountUnchanged”].Value;
totalInsertedRowsToDestination+=rowCountNew;
totalUpdatedRowsToDestination+=rowCountChanged;
totalUnChangedRowsToDestination+=rowCountUnchanged;
变量[“用户::TotalInsertedRowsToDestination”]。值=TotalInsertedRowsToDestination;
Dts.Variables[“User::TotalUpdatedRowsToDestination”]。Value=TotalUpdatedRowsToDestination;
Dts.Variables[“User::TotalUnChangedRowsToDestination”]。Value=TotalUnChangedRowsToDestination;
Dts.TaskResult=(int)ScriptResults.Success;
}
捕获(例外情况除外)
{
Dts.Events.FireError(0,“脚本任务”,例如Message+“\r”+ex.StackTrace,String.Empty,0);
Dts.TaskResult=(int)ScriptResults.Failure;
}
<AssemblyReference AssemblyPath="Microsoft.SqlServer.DTSRuntimeWrap, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=x86, Custom=null" />
<# int MajorSQLVersion  = 13; #>
<AssemblyReference AssemblyPath="Microsoft.SqlServer.DTSRuntimeWrap, Version=<#= MajorSQLVersion.ToString() #>.0.0.0" />