我可以通过编程方式创建软件包 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.DtsComException:'集成 找不到服务类。确保集成服务 已正确安装在运行 应用。另外,请确保集成的64位版本 如果您正在运行64位应用程序,则会安装服务。
更新:
我了解安装SSIS(MsDtsServer150)将解决此问题,但是以32位模式运行ssis确实不需要,因为我的应用程序以32位模式运行,因此无需安装SSIS就可以正常工作,类似于SSMS中的导入导出向导
进行了更多研究,即使未安装SSIS,我的应用程序仍以32位模式运行SSIS 2017,因为SSMS 17. *添加了所需的dll,但SSMS 18.0未安装所需的dll,并且在ssms中禁用了导入导出向导18.0,因此我的应用无法正常工作。
我能够从Visual Studio中运行SSIS包,所以我的主要问题是,我如何能够在Visual Studio中运行它而无需在gac中添加dll?我该如何利用同一件事?
以下是详细说明:
我们可以使用Sql server *版本安装程序(例如:sql server开发人员版本)安装SSIS,以使32位和64位的SSIS可以调用DTSRuntime.Application()的任何应用程序正常工作,但是如果未使用sql server安装SSIS安装程序,而不是仅安装SSMS,它仍将向gac添加32位版本,并在DTS文件夹下使用所有需要的dll创建“ C:\ Program Files(x86)\ Microsoft SQL Server \ 140”文件夹,借助此功能,我们可以通过将项目设置为32位模式的DTSRuntime.Application(),以32位模式运行SSIS。
Visual Studio正在为1.00.0.0创建dll的ex:15.100.0.0版本,并且以某种方式能够使用dll在同一文件夹中,以利用相同的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中的程序集,但即使这样也没有帮助。