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

自建GitHub Windows Runner执行构建时遇MSB4226错误求助

解决方案:MSB4226 找不到 SSDT Targets 文件的问题

核心原因

你的.sqlproj项目默认引用了VS2019(v16.0)版本的SSDT目标文件,但自建Runner镜像安装的是VS2022 Build Tools(对应v17.0)的SSDT,路径不匹配导致报错。旧废弃镜像能成功是因为它可能配置了MSBuild版本兼容映射,或者通过环境变量让MSBuild自动定位到对应版本的SSDT。

无需修改.sqlproj的解决方法

1. 直接指定VS2022的MSBuild路径执行构建

在GitHub Actions构建步骤中,跳过默认的msbuild命令,直接调用VS2022 Build Tools自带的MSBuild,它会自动加载对应版本的SSDT:

& "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\MSBuild\Current\Bin\MSBuild.exe" YourProject.sqlproj /t:Build /p:Configuration=Release

2. 在Docker镜像层面创建版本兼容符号链接(一次性解决)

在Dockerfile中添加创建 junction 链接的步骤,让MSBuild寻找的旧路径指向实际的VS2022 SSDT目录,后续所有构建无需额外配置:

# 安装完VS2022 Build Tools和SSDT后执行
RUN New-Item -ItemType Junction -Path "C:\Program Files (x86)\Microsoft Visual Studio\18\BuildTools" -Target "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools"
RUN New-Item -ItemType Junction -Path "C:\Program Files (x86)\Microsoft Visual Studio\18\BuildTools\MSBuild\Microsoft\VisualStudio\v16.0\SSDT" -Target "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\MSBuild\Microsoft\VisualStudio\v17.0\SSDT"

3. 使用VS开发者命令提示符初始化环境

调用VS2022的开发者命令提示符,它会自动配置所有必要的环境变量,包括SSDT的路径:

& "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\Common7\Tools\VsDevCmd.bat" && msbuild YourProject.sqlproj /t:Build /p:Configuration=Release

关于旧废弃镜像的疑问

旧镜像未报错的常见原因:

  • 镜像中同时安装了VS2019和VS2022 Build Tools,MSBuild自动匹配了项目依赖的版本;
  • 旧镜像配置了MSBuildExtensionsPath或VCTargetsPath环境变量,覆盖了默认的版本检测逻辑;
  • 旧项目文件通过条件判断动态引用了对应版本的SSDT(可能是隐式配置未被注意)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 21:12:06