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

如何创建使用Martincostello.Sqllocaldb的应用安装程序并解决引用问题?

解决Martincostello.Sqllocaldb跨机器部署的引用问题

问题根源

你遇到的SNI.dll找不到问题,本质是NuGet包中的原生平台依赖未被安装工具自动包含。Martincostello.Sqllocaldb依赖的Microsoft.Data.SqlClient.SNI包包含x86/x64专属的原生dll,VS安装项目和InstallShield默认不会自动扫描并打包这些平台特定文件。

InstallShield 2020 解决步骤

  • 手动添加原生依赖文件
    1. 打开InstallShield项目,进入「Files」视图
    2. 在主程序输出目录下,手动添加Microsoft.Data.SqlClient.SNI.1.0.19235.1\runtimes\win-[x86/x64]\native路径下的所有文件(根据你的应用目标平台选择x86或x64)
    3. 将这些文件的安装路径设置为与主程序集相同的目录,确保运行时能被正确加载
  • 锁定目标平台
    在「General Information」视图中设置匹配的目标平台(x86/x64),避免跨平台导致的dll不兼容
  • 校验依赖完整性
    用「Dependencies」视图扫描项目,确认Microsoft.Data.SqlClient.SNI相关依赖已被纳入安装包

VS 2017-2019 安装项目解决步骤

  • 手动编辑项目文件添加依赖
    1. 卸载VS安装项目,右键选择「编辑 .vdproj」
    2. 在<File>节点区域添加对应平台的SNI.dll引用,示例:
      <File Name="SNI.dll" SourcePath="..\YourApp\packages\Microsoft.Data.SqlClient.SNI.1.0.19235.1\runtimes\win-x86\native\SNI.dll" />
      
    3. 保存后重新加载项目,确认文件已被加入输出列表
  • 改用更智能的打包方式
    放弃传统VS安装项目,改用ClickOnce发布或MSIX打包,这两种方式会自动识别并打包NuGet包中的原生依赖,无需手动配置

示例项目参考

  • 直接基于Martincostello.Sqllocaldb仓库自带的示例应用搭建安装项目,按照上述步骤配置依赖后,即可生成可跨机器部署的安装包
  • 也可以新建一个简单的.NET项目,安装Martincostello.Sqllocaldb包并编写基础的SQLLocalDB操作代码,再为其配置安装包,验证依赖包含逻辑是否正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 22:30:50