.NET 6应用运行SSIS包报错:无法加载Microsoft.SqlServer.DtsRuntimeWrap
编译通过但运行时抛出could not load file or assembly 'microsoft.sqlserver.dtsruntimewrap, version=12.0.0.0'错误,核心原因是SSIS相关运行时组件未正确安装或版本不匹配,可按以下步骤解决:
安装对应版本的SSIS运行时
错误中的版本12.0.0.0对应SQL Server 2014的SSIS运行时,需安装SQL Server 2014 Integration Services Runtime,注意选择与你的.NET应用目标平台一致的架构(x86/x64)。若使用较新版本的SSIS包,也可安装最新版SSIS运行时(如SQL Server 2022),后续可通过绑定重定向处理版本差异。检查项目目标平台与依赖包
- 右键项目→属性→生成→目标平台,设置为与SSIS运行时一致的架构(x64或x86),避免默认的Any CPU导致加载失败。
- 确认项目引用的SSIS相关NuGet包版本正确,比如
Microsoft.SqlServer.Management.IntegrationServices或Microsoft.SqlServer.Dts.Runtime,版本需与运行时程序集版本兼容。
添加程序集绑定重定向(版本不匹配时)
若安装了更高版本的SSIS运行时但代码依赖旧版本,可在项目配置中添加绑定重定向,让CLR加载可用版本。示例配置(.NET 6可放在runtimeconfig.template.json中):<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Microsoft.SqlServer.DtsRuntimeWrap" publicKeyToken="89845dcd8080cc91" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-15.0.0.0" newVersion="15.0.0.0" /> <!-- 替换为实际安装的版本号 --> </dependentAssembly> </assemblyBinding> </runtime>验证程序集是否存在
打开命令提示符,运行gacutil /l Microsoft.SqlServer.DtsRuntimeWrap,查看GAC中是否存在对应版本的程序集。若不存在,说明SSIS运行时未正确安装,需重新安装。也可直接检查系统目录C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SqlServer.DtsRuntimeWrap下是否有对应版本的文件夹。
内容的提问来源于stack exchange,提问作者Priti

