You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将NetStandard2.0类库引入.NET4.7.2 Web项目时缺失Microsoft.Data.SqlClient.SNI.dll

问题:.NET Framework 4.7.2 Web应用引入NetStandard2.0类库后无法加载Microsoft.Data.SqlClient.SNI.dll

我将近期迁移至NetStandard2.0的类库引入基于.NET Framework 4.7.2的旧式AspNet Web应用项目时遇到了问题。更新后的程序集引用了NuGet包Microsoft.Data.SqlClient v5.1.0,运行时尝试打开SQL连接时出现以下错误:

'Microsoft.Data.SqlClient.TdsParser'的类型初始值设定项引发异常。
'Microsoft.Data.SqlClient.SNILoadHandle'的类型初始值设定项引发异常。
无法加载DLL 'Microsoft.Data.SqlClient.SNI.dll': 找不到指定的模块。(异常来自HRESULT: 0x8007007E)

经确认,输出bin文件夹中确实没有Microsoft.Data.SqlClient.SNI.dll,但存在x64、x86和arm64版本的DLL(截图如下):
SqlClient dlls output

已尝试的解决方案:

  • 直接在Web应用项目中添加NuGet包Microsoft.Data.SqlClient v5.1.0
  • 查阅官方故障排查文档,建议显式引用Microsoft.Data.SqlClient包中的.targets文件,但未说明具体操作方法
  • 参考同类问题,在应用的.csproj文件中添加以下目标配置,但无明显效果:
<Target Name="_CopySNIFilesToWebProjectOutputDir" AfterTargets="CopySNIFiles" Condition="'$(WebProjectOutputDir)' != ''">
  <Copy SourceFiles="@(SNIFiles)" DestinationFiles="@(SNIFiles -> '$(WebProjectOutputDir)\bin\%(RecursiveDir)%(Filename)%(Extension)')" />
</Target>
  • 指定x64为目标平台,无影响

目前已无其他解决思路,如何将Microsoft.Data.SqlClient.SNI.dll放入应用的bin文件夹中?

内容的提问来源于stack exchange,提问作者retired

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 09:07:37