VS2019中SSIS脚本组件使用RestSharp报错及GAC问题求助
问题解决方案
一、RestClient初始化失败的核心原因
你的目标框架是.NET Framework 4.7,但报错里的System.Text.Json.JsonSerializerOptions..ctor(System.Text.Json.JsonSerializerDefaults)构造函数,仅在**.NET Framework 4.8**及更高版本(或.NET Core 3.0+)中存在。你当前使用的RestSharp版本大概率依赖了这个高版本API,导致在4.7环境下无法找到对应方法。
解决步骤:
- 降级RestSharp版本:选择兼容.NET Framework 4.7的稳定版本,比如v106.15.0(该版本是最后一批全面支持.NET Framework 4.5+、且依赖旧版JSON处理组件而非高版本System.Text.Json的版本)。
- 调整NuGet依赖:在脚本组件项目中执行以下命令更换版本:
Uninstall-Package RestSharp Install-Package RestSharp -Version 106.15.0 - 确认目标框架:右键脚本项目→属性→应用程序,确保目标框架确实设置为.NET Framework 4.7,避免误选更高版本。
二、GAC安装与查询的问题
你执行gacutil -i RestSharp.dll显示成功,但gacutil -l RestSharp.dll找不到程序集,问题出在这几点:
- 查询命令格式错误:GAC查询不需要带
.dll后缀,正确命令为:gacutil -l RestSharp - 架构不匹配:SSIS默认可能以64位运行,而VS自带的gacutil多为32位(路径通常是
C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools),若要安装到64位GAC,需使用64位版本的gacutil(路径为C:\Program Files\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\x64)。 - 强命名缺失:只有带强签名的程序集才能安装到GAC,若你使用的RestSharp.dll未强签名,即使
gacutil -i显示成功,实际也不会写入GAC。降级到v106.15.0版本的RestSharp自带强签名,可正常完成GAC注册。
补充建议
若不想依赖GAC,可直接将RestSharp.dll及其依赖的DLL(旧版RestSharp依赖Newtonsoft.Json而非System.Text.Json)复制到SSIS运行时目录:
- 32位环境:
C:\Program Files (x86)\Microsoft SQL Server\150\DTS\Binn - 64位环境:
C:\Program Files\Microsoft SQL Server\150\DTS\Binn
SSIS运行时会直接读取该目录下的依赖文件,无需GAC注册。
内容的提问来源于stack exchange,提问作者user2148983
相关产品推荐
相关产品推荐

