.NET 8 WinForms发布版无法加载Microsoft.Data.SqlClient 5.0.0.0求助
.NET 8 WinForms发布后找不到Microsoft.Data.SqlClient 5.0.0.0的解决办法
1. 确认发布时的依赖包含
- 检查发布输出目录中是否存在
Microsoft.Data.SqlClient.dll(版本5.1.5)。若使用单文件发布,需在项目文件(.csproj)中添加配置确保依赖嵌入:
<PropertyGroup> <PublishSingleFile>true</PublishSingleFile> <IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract> </PropertyGroup>
- 若未用单文件发布,右键项目→发布→配置→文件发布选项,取消勾选可能导致依赖遗漏的选项(如“裁剪未使用的代码”)。
2. 修复程序集绑定重定向
- 在项目的
app.config中添加正确的重定向规则,覆盖所有旧版本指向5.1.5:
<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Microsoft.Data.SqlClient" publicKeyToken="23ec7fc2d6eaa4a5" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-5.1.5.0" newVersion="5.1.5.0" /> </dependentAssembly> </assemblyBinding> </runtime>
- .NET 5+项目需在.csproj中启用自动重定向生成:
<PropertyGroup> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType> </PropertyGroup>
3. 排查隐性依赖引用
- 执行
dotnet list package --include-transitive命令查看完整依赖树,找出间接引用5.0.0.0版本的第三方包,将其更新到兼容.NET 8的版本。
4. 手动补充依赖文件
- 从本地NuGet缓存(路径示例:
C:\Users\<用户名>\.nuget\packages\microsoft.data.sqlclient\5.1.5\lib\net8.0)复制Microsoft.Data.SqlClient.dll到发布后的exe目录。
5. 检查共享驱动器权限
- 确保运行程序的用户对共享目录有读取权限;右键dll文件→属性,若有“解除锁定”选项则点击解除,避免系统阻止读取。
内容的提问来源于stack exchange,提问作者Veera
相关产品推荐
相关产品推荐

