【问题标题】:How to upgrade a Visual Studio project from within a GitHub action?如何从 GitHub 操作中升级 Visual Studio 项目?
【发布时间】:2020-12-14 10:35:49
【问题描述】:

可以使用devenv.exe 命令从命令行升级 Visual Studio 项目,如下所示:

  devenv.exe SOLUTION_PATH /Upgrade

其中 SOLUTION_PATH 是 Visual Studio 解决方案(或项目)文件的路径。

在 GitHub 操作中执行此步骤的最直接方法是什么?

我的尝试

到目前为止,我还没有找到让devenv.exe 进入 GitHub Action 路径的方法。似乎没有为此预先构建的操作步骤(setup-msbuild 步骤不会使devenv 可用)。甚至硬编码路径,例如

 MSDEVENV_PATH: ${{'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\devenv.com'}}

... then later ...

run: ${{env.MSDEVENV_PATH}} ${{env.SOLUTION_FILE_PATH}} /Upgrade

因为路径包含空格而失败,我找不到添加引号的方法。

我知道a way to find devenv using powershell and extra downloadable packages,但这需要编写一个 PowerShell 脚本,并且可能需要对其进行签名,而且我不知道这是否可以在 GitHub Action 中使用。也许有一个更简单的方法,因此我的问题是:升级解决方案最直接的方法是什么?

【问题讨论】:

标签: visual-studio github-actions


【解决方案1】:

您需要一个基于 Windows 的运行器。 vswhere 是获取 Visual Studio 安装各个组件路径的工具,其文件夹位于路径 (source) 中。

run: |
  $devenv = & vswhere.exe '-property' productPath
  Start-Process -FilePath $devenv -ArgumentList '${{env.SOLUTION_FILE_PATH}} /Upgrade' -Wait

【讨论】:

  • 这个解决方案真的适合你吗?对我来说,我认为该步骤在异步 devenv 进程完成更新解决方案之前退出。
【解决方案2】:

感谢@riQQ 的部分回答,我目前有以下内容,它等待使用this answer 中建议的Out-Null 管道完成输出,并等待生成的文件出现。请注意,我使用的是 project 的路径,而不是 solution。 (我无法让解决方案升级正常工作,尽管我从未弄清楚原因。)

run: |
    $devenv = & vswhere.exe '-property' productPath
    Write-Output "$devenv"
    & $devenv "${{env.VCPROJ_FILE_PATH}}" /Upgrade /NoSplash | Out-Null
    Write-Output "devenv launched"
    while (!(Test-Path "${{env.VCXPROJ_FILE_PATH}}")) { Start-Sleep -Seconds 10 }
    Write-Output "vcxproj found"
    while (!(Test-Path "${{env.VCXPROJ_FILTERS_FILE_PATH}}")) { Start-Sleep -Seconds 10 }
    Write-Output "vcxproj.filters found"
    Start-Sleep -Seconds 10
    Write-Output "done."

由于某种原因,当作为 GitHub Action 的一部分运行时,此步骤需要 5 分钟以上才能完成。在我的本地机器上只需要几秒钟。由于讨厌的文件轮询,我不认为这是一个理想的解决方案,但我将其发布在这里以供参考。

【讨论】:

猜你喜欢
  • 2018-01-10
  • 2017-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-04
相关资源
最近更新 更多