C# 以编程方式创建SSIS 2019包时出错

C# 以编程方式创建SSIS 2019包时出错,c#,.net,ssis,ssis-2017,ssis-2019,C#,.net,Ssis,Ssis 2017,Ssis 2019,当涉及SSI时,我能够以编程方式创建包 2016年,但当我尝试以编程方式创建包时,我发现了以下错误 无法加载文件或程序集“microsoft.sqlserver.dtsruntimewrap”, 版本=15.100.0.0,区域性=中性,publickeytoken=89845dcd8080cc91' 或者它的一个依赖项。系统找不到该文件 指定的。” 创建了示例包并上传到一个驱动器位置下方 我观察到2016年的Microsoft.SqlServer.DTSRuntimeWrap存在于 C:

当涉及SSI时,我能够以编程方式创建包 2016年,但当我尝试以编程方式创建包时,我发现了以下错误

无法加载文件或程序集“microsoft.sqlserver.dtsruntimewrap”, 版本=15.100.0.0,区域性=中性,publickeytoken=89845dcd8080cc91' 或者它的一个依赖项。系统找不到该文件 指定的。”

创建了示例包并上传到一个驱动器位置下方

我观察到2016年的Microsoft.SqlServer.DTSRuntimeWrap存在于

C:\Windows\Microsoft.NET\assembly\GAC_32\Microsoft.SqlServer.DTSRuntimeWrap\v4.0_13.0.0.0__89845dcd8080cc91
但作为visual studio 2017安装一部分的ssis 2019并没有安装在GAC_32中,而是安装在

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\SSIS\150\Binn\Microsoft.SQLServer.DTSRuntimeWrap.dll
所以,使用gacutil将其安装到gac中,但现在我开始了解以下内容 错误

Microsoft.SqlServer.Dts.Runtime.DTSCOMEException:“集成” 找不到服务类。请确保集成服务 已正确安装在运行的计算机上 此外,请确保64位版本的集成 如果您正在运行64位应用程序,则会安装服务

更新:

我知道安装SSI(MsDtsServer150)可以解决这个问题,但在32位模式下运行SSI确实不需要这样做,因为我的应用程序在32位模式下运行,它应该在不安装SSI的情况下工作,类似于SSMS中的导入导出向导

做了更多的研究,我的应用程序在32位模式下运行SSIS 2017,即使没有安装SSIS,但仍能工作,因为SSMS 17.*添加了所需的dll,但SSMS 18.0没有安装所需的dll,并且在SSMS 18.0中禁用了导入导出向导,因此我的应用程序不再工作

我能够从VisualStudio运行SSIS包,所以我的主要问题是,在没有gac中的DLL的情况下,我如何能够在VisualStudio中运行它?如何利用同样的东西

以下是详细说明:

我们可以使用Sql server*edition安装程序(例如:Sql server developer edition)为SSIS 32位和64位安装SSIS,用于任何调用DTSRuntime.application()的应用程序,但如果未使用Sql server安装程序安装SSIS,而只是安装了SSMS,它仍将向gac添加32位版本,并创建“C:\Program Files(x86)\Microsoft SQL Server\140“文件夹以及DTS文件夹下所有需要的DLL,通过此文件夹,我们可以在项目设置为32位模式时调用DTSRuntime.Application()以32位模式运行SSIS

Visual studio正在为15.0.0.0创建dll的ex:15.100.0.0版本,并且它能够以某种方式使用同一文件夹中的dll,以利用我尝试在app.config中创建绑定重定向的相同版本,如下所示,但没有成功

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
     <dependentAssembly>
        <assemblyIdentity name="Microsoft.SqlServer.ManagedDTS" publicKeyToken="89845dcd8080cc91" culture="neutral"/>
        <bindingRedirect oldVersion="11.0.0.0-15.0.0.0" newVersion="15.100.0.0"/>
        <codeBase version="15.100.0.0" href="C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\SSIS\150\Binn\Microsoft.SqlServer.ManagedDTS.dll"/>
      </dependentAssembly>
</assemblyBinding>

甚至尝试将href更改为“\Microsoft.SqlServer.ManagedDTS.dll”以指向bin中的程序集,但即使这样也无济于事