在x64服务器中运行.Net程序时出现System.BadImageFormatException错误

时间:2019-06-13 09:30:20

标签: c# .net sql-server ssis etl

我有一个旧的以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相对较新

0 个答案:

没有答案