我有一个旧的以32位编译的DotNet程序,该程序具有可加载和执行SSIS包的表单。对于执行SSI包,它使用程序集Microsoft.SqlServer.DTSRuntimeWrap,该程序以32位显示,如下所示。
using Microsoft.SqlServer.Dts.Runtime.Wrapper;
.
.
namespace WinFmAppETLControl
{
public class FrmControl : Form
{
this.ProcessStep1();
private void ProcessStep1()
{
if (((IDTSApplication100)new ApplicationClass()).LoadPackage("C:\\Users\\abc\\MyData\\WinFmAppETLControl\\ETL\\SUN Daily ETL\\Batch and SysidRange.dtsx", true, (IDTSEvents100)null).Execute() == DTSExecResult.DTSER_SUCCESS){
MessageBox.Show("Success");
}
else{
MessageBox.Show("Failure");
}
}
}
}
现在,我需要将该程序迁移到64位新服务器。我创建了要在服务器中运行的exe文件。 当我在x64中构建项目并在服务器上运行时,执行exe文件时出现错误消息。
无法加载文件或程序集“ Microsoft.SqlServer.DTSRuntimeWrap, 版本= 10.0.0.0,文化=中性,PublicKeyToken = 89845dcd8080cc91'或 它的依赖项之一。试图用以下命令加载程序 格式不正确。
当我在x86中构建项目并在服务器上运行时,执行exe文件时出现错误消息。
System.Runtime.InteropServices.COMException(0x80040154):由于以下错误,检索具有CLSID {BA785E28-3D7B-47AE-A4F9-4784F61B598A}的组件的COM类工厂失败:80040154未注册类(来自HRESULT的异常: 0x80040154(REGDB_E_CLASSNOTREG)。
服务器上运行的SSIS是x64位(D:\ Program Files \ Microsoft SQL Server \ 110 \ DTS \ Binn \ MsDtsSrvr.exe“)。
如果有人知道,请帮助。我检查了许多答案,但找不到解决方案。我对.Net相对较新