DevOps服务器无法构建VB6应用程序

4

我的需求是通过Microsoft Azure DevOps Server 2019来构建VB6应用程序。为此,我已经在Microsoft Server 2019上安装了VB6企业版IDE,它的工作非常完美。对于构建,我选择使用一个非常简单的Powershell脚本。

$vb6 = "C:\Program Files (x86)\Microsoft Visual Studio\VB98\Vb6.exe"
$prj = "C:\proj\Project1.vbp"
$outdir = "C:\proj\out"
$out = "C:\proj\out\log.log"

New-Item -ItemType Directory -Force -Path C:\proj\out
& $vb6 /make $prj /out $out /outdir $outdir

即使我在Powershell窗口中运行脚本时,无论使用哪个项目文件夹,脚本本身都会运行。当通过DevOps运行时,它会执行而且没有问题报告,目录也被创建了,但是VB6部分似乎没有执行。为什么会出现这种情况,我有什么选项可以使其正常工作?


你的VB6构建命令行看起来没问题。不过我从未使用过Azure DevOps Server,无法对那部分进行评论。很抱歉帮不上更多忙。 - MarkJ
2
直接在服务器上使用PowerShell脚本构建VB6应用程序而不使用Azure DevOps Server如何?如果可能,请检查此文档:http://www.donovanbrown.com/post/Build-Visual-Basic-60-applications-with-Visual-Studio-Team-Services 是否有帮助。 - Leo Liu
@LeoLiu-MSFT 我现在只是这样做了,但如果我或其他人找到答案,我会保留这个问题的开放状态。 - Boris Martinovic
1
我创建了一个流水线,其中包含一些必要的步骤,这些步骤每天都会同时发生,而没有这个步骤。完成流水线后,我使用此脚本(带有构建文件夹)运行Windows计划任务,并且没有任何问题。虽然这不是真正的1/1解决方案,但它可以工作。 - Boris Martinovic
你如何在Windows Server 2019上安装VB6 Enterprise IDE? - Borislav Ivanov
显示剩余5条评论
3个回答

0

你尝试过在$vb6开头和结尾添加额外的chr(34)吗?我想,由于我们正在将命令行作为字符串构建,并且通常需要用引号定界带有空格的路径...

明白我的意思吗?...


我之前考虑过这个问题,也尝试过将CD到文件夹并从那里执行VB6.exe,当我在本地运行时一切正常,但是DevOps就是无法通过这条线路。 - Boris Martinovic

0
最终,我创建了一个流水线,其中不包括此步骤,但包括其他一些必要的步骤,这些步骤将在每天同时发生。完成流水线后,我使用此脚本(带有构建文件夹)运行Windows计划任务,并且没有任何问题。虽然这不是真正的1/1解决方案,但它可以工作。

这似乎是一个很好的解决方法,但是如果有人发布了一个诊断根本原因的答案,你应该考虑将“接受”的答案更改为那个答案。 - StayOnTarget
当然,我仍在跟踪这个线程,因为最好的方法是直接完成。 - Boris Martinovic

0
在我的PowerShell脚本中,我使用"Start-Process" cmdlet运行vb6.exe的成功率更高,我发现使用Call Operator(&)有些棘手(已经有一段时间我没有编写构建脚本的这一部分了,不记得具体问题是什么了)
例如-
$projectFile = 'C:\Proj\ProjFile.vbp'
$binaryDir = 'C:\Binaries\Proj'
$logFile = 'C:\Proj\BuildLog.log'
$vb6EXE = 'C:\Program Files (x86)\Microsoft Visual Studio\VB98\VB6.EXE'
$paramArr = '/MAKE', "`"$projectFile`"", "/outdir `"$binaryDir`"", "/out `"$logFile`""  

Start-Process -FilePath $vb6EXE -ArgumentList $paramArr -NoNewWindow -Wait

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接