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

使用GitHub Actions(YML)创建MSI文件时vdproj项目无法构建

vdproj安装项目在GitHub Actions工作流中构建失败排查方案

vdproj(Visual Studio Installer 安装项目)不属于MSBuild原生支持的项目类型,直接调用msbuild命令构建整个解决方案时,会默认跳过或报错无法编译该类项目,叠加现有配置的语法问题、环境适配问题就会导致构建失败,具体修复步骤如下:

1 修正现有YAML的基础语法错误

当前工作流的steps块存在格式问题,会导致步骤执行异常:

  • checkout、setup-node、setup-msbuild三个步骤缺少-前缀,全局缩进不统一
  • node-version、vswhere-path等参数值使用了中文全角单引号‘’,需要替换为英文半角单引号
    修正后的基础步骤结构参考:
name: xxx-github-actions
on: [push]
jobs:
  build-release-configuration:
    runs-on: self-hosted
    steps:
      - name: checkout
        uses: actions/checkout@v3

      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '14'

      - name: Add msbuild to Path
        uses: microsoft/setup-msbuild@v1
        with:
          vswhere-path: 'C:\Program Files (x86)\Microsoft Visual Studio\Installer'
          vs-version: '[15.9,16.0)'

      - uses: nuget/setup-nuget@v1
        with:
          nuget-version: 4.7.1

      - run: nuget restore xxx.project.sln

2 解决vdproj无法被MSBuild直接构建的核心问题

MSBuild从Visual Studio 2012版本开始默认移除了vdproj项目的构建支持,需要做以下适配:

  • 确认自托管Runner上安装的Visual Studio 2017已经勾选安装了Microsoft Visual Studio Installer Projects扩展,缺少该扩展时IDE本身也无法正常构建vdproj项目
  • 不要直接用msbuild命令构建整个解决方案,先单独编译所有C++、C#、C++/CLI业务项目,再调用Visual Studio自带的devenv命令行工具构建vdproj安装项目,devenv原生支持vdproj类型的编译逻辑
    替换原有整行msbuild构建命令为以下两步:
# 先构建所有非安装类业务项目,注意把命令里的Install替换为你自己的vdproj项目名称
- run: msbuild xxx.project.sln /p:Configuration=Release /p:Platform=x64 /t:!"Install"

# 调用devenv构建vdproj安装项目,根据自托管机器上的VS2017版本替换路径里的Enterprise为Community/Professional
- run: '"C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\devenv.exe" xxx.project.sln /Build "Release|x64" /Project "你的安装项目名.vdproj"'

如果不确定排除安装项目的过滤规则写法,也可以逐个调用msbuild构建所有C++、C#、C++/CLI业务项目,再执行devenv构建安装包步骤,避免规则写错漏编译业务代码。

3 自托管Runner环境检查项

  • 不要用SYSTEM系统账号启动Runner服务,建议用本地管理员账号启动,保证有足够权限访问VS安装目录、项目输出目录
  • 确认vdproj项目里配置的主程序、依赖文件路径,和业务项目实际输出路径完全一致,避免打包时找不到文件
  • 如果构建时提示COM组件相关错误,先在自托管机器上手动打开一次Visual Studio,完成首次启动的初始化配置,devenv命令行才能正常工作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 11:36:20