为何ClickOnce未将Microsoft.Data.SqlClient.SNI.x86/x64 DLL纳入发布文件夹?
解决ClickOnce发布VSTO加载项时缺失Microsoft.Data.SqlClient.SNI DLL的问题
方法1:直接修改项目文件
找到VSTO加载项的.csproj文件,用记事本或代码编辑器打开,添加以下XML配置块,明确标记要包含到ClickOnce发布中的SNI DLL:<ItemGroup> <Content Include="$(SolutionDir)packages\Microsoft.Data.SqlClient.[你的版本号]\runtimes\win-x86\native\Microsoft.Data.SqlClient.SNI.x86.dll"> <Link>Microsoft.Data.SqlClient.SNI.x86.dll</Link> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <IncludeInClickOnce>true</IncludeInClickOnce> </Content> <Content Include="$(SolutionDir)packages\Microsoft.Data.SqlClient.[你的版本号]\runtimes\win-x64\native\Microsoft.Data.SqlClient.SNI.x64.dll"> <Link>Microsoft.Data.SqlClient.SNI.x64.dll</Link> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <IncludeInClickOnce>true</IncludeInClickOnce> </Content> </ItemGroup>记得把
[你的版本号]替换成你实际安装的Microsoft.Data.SqlClient版本号,比如2.0.1。保存文件后重新生成项目,再执行ClickOnce发布。方法2:通过Visual Studio界面手动添加并配置
- 在Visual Studio里右键点击VSTO加载项项目,选择添加→现有项
- 导航到NuGet包的本地路径:
packages\Microsoft.Data.SqlClient.[你的版本号]\runtimes\win-x86\native,选中Microsoft.Data.SqlClient.SNI.x86.dll添加到项目;同样操作添加x64版本的DLL(路径是win-x64\native) - 在解决方案资源管理器中选中这两个DLL,打开属性窗口:
- 把复制到输出目录设为“始终复制”或“如果较新则复制”
- 把包含在ClickOnce中设为“是”
- 重新生成项目后再发布
方法3:检查项目引用的复制本地设置
- 确认你的.NET Core 2.0项目中,Microsoft.Data.SqlClient的NuGet包引用的
CopyLocal属性是True - 如果VSTO项目是直接引用的这个.NET Core项目,右键点击VSTO项目里的该引用,选属性,把复制本地设为
True,这样依赖的DLL会被复制到VSTO的输出目录,ClickOnce就能自动包含它们
- 确认你的.NET Core 2.0项目中,Microsoft.Data.SqlClient的NuGet包引用的
内容的提问来源于stack exchange,提问作者Cemil YILDIZ
相关产品推荐
相关产品推荐

