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

C# ClickOnce程序启动报错:无法加载Microsoft.SqlServer.Management.SqlParser

解决ClickOnce部署后Microsoft.SqlServer.Management.SqlParser v12.0.0.0加载失败问题

核心问题

你的系统通过ClickOnce部署时,Microsoft.SqlServer.Management.SqlParser, Version=12.0.0.0未被正确打包或客户端缺少对应版本组件,导致启动时抛出FileNotFoundException。注意v12.0对应SQL Server 2014,之前安装2012的语言服务版本不匹配,所以无效。


解决方案1:修正ClickOnce发布配置

  1. 打开项目属性→「发布」→「应用程序文件」,勾选「显示所有文件」找到目标程序集
  2. 将其「发布状态」从「包含(自动)」改为**「包含」**,「下载组」设为「必需(启动前下载)」
  3. 手动编辑.csproj文件,修复原PublishFile节点的语法错误(多余的点)并补全版本信息:
<PublishFile Include="Microsoft.SqlServer.Management.SqlParser, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91">
  <Visible>False</Visible>
  <Group>
  </Group>
  <TargetPath>
  </TargetPath>
  <PublishState>Include</PublishState>
  <IncludeHash>True</IncludeHash>
  <FileType>Assembly</FileType>
</PublishFile>
  1. 清理项目、重新生成并发布,测试客户端安装后的启动情况

解决方案2:手动添加显式引用并打包

  1. 从SQL Server 2014安装机上获取Microsoft.SqlServer.Management.SqlParser.dll,常见路径:
    • C:\Program Files\Microsoft SQL Server\120\Tools\Binn\ManagementStudio
    • C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SqlServer.Management.SqlParser\v4.0_12.0.0.0__89845dcd8080cc91
  2. 将dll复制到项目输出目录(如bin\Release),右键项目→添加引用→浏览选中该dll
  3. 右键该引用→属性,设置「复制本地」为True、「特定版本」为True
  4. 重新发布ClickOnce,此时组件会被强制打包进发布包

解决方案3:在客户端安装对应版本的组件

下载并安装Microsoft SQL Server 2014 Transact-SQL Language Service,该组件会将目标程序集注册到GAC,客户端启动时可直接从GAC加载,无需打包到ClickOnce包中。


排查验证

  • 安装后检查客户端应用缓存目录(C:\Users\[用户名]\AppData\Local\Apps\2.0子目录),确认Microsoft.SqlServer.Management.SqlParser.dll存在
  • 使用fuslogvw.exe(程序集绑定日志查看器)跟踪加载过程,定位具体加载失败原因

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 09:40:20