如何解决通过 tfs buildagent 启动时,bitsadmin 不工作
我正在编写一个 powershell 脚本,用于下载一些安装文件。 (exe,msi,zip)
它将从 msbuild 项目启动,由 tfs 中的 buildagent 执行。问题是,它不会开始下载。我使用了以下命令:
bitsadmin /transfer nodetest /download /dynamic /priority FOREGROUND "https://nodejs.org/dist/v14.15.5/node-v14.15.5-x64.msi" "C:\temp\buildPrerequisites\nodejstest.msi"
当我连接到 buildagent 并使用 powershell 窗口中的命令时,它将按预期工作。我还确保从 msbuild 文件正确执行脚本。builduser 具有管理权限。
有人有想法吗?
提前致谢
解决方法
我将下面添加到我的 .csproj 文件中,并在我的管道中使用 msbuild 任务进行构建。对我来说效果很好。
<Target Name="download" BeforeTargets="BeforeBuild">
<Exec Command="C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NonInteractive -executionpolicy Unrestricted -command "& { bitsadmin /transfer nodetest /download /dynamic /priority FOREGROUND https://nodejs.org/dist/v14.15.5/node-v14.15.5-x64.msi C:\temp\buildPrerequisites\nodejstest.msi } "" LogStandardErrorAsError="true" ContinueOnError="false" />
</Target>
上述目标 download
将在您构建项目时自动执行。因为它添加了 BeforeTargets
依赖项到目标 BeforeBuild
,
如果您在检查构建日志时发现目标未执行。这可能是因为您没有为 download
目标设置依赖目标。如下图:
<Target Name="download" >
..
</Target>
然后您需要确保正确配置 msbuild 任务以运行 download
目标
- task: MSBuild@1
displayName: 'Build'
inputs:
solution: **/myProject.csproj
msbuildArguments: /t:download
更新:
您也可以使用 Invoke-WebRequest
。见下文:
<Exec Command="C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NonInteractive -executionpolicy Unrestricted -command "& { Invoke-WebRequest -Uri https://nodejs.org/dist/v14.15.5/node-v14.15.5-x64.msi -OutFile C:\test\buildPrerequisites\nodejstest.msi } "" LogStandardErrorAsError="true" ContinueOnError="false" />
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。