【问题标题】:Running DNU Restore on VSO build在 VSO 构建上运行 DNU 还原
【发布时间】:2015-08-02 10:59:40
【问题描述】:

我正在尝试在 VSO 的主机代理上构建 DNX 项目。

首先是安装 DNX。我有以下 powershell 脚本来执行此操作:

dnx-upgrade.ps1:

dnvm upgrade -r clr -arch x86 -v 1.0.0-beta6

它成功安装并更新了PATH:

添加 C:\Users\buildguest.dnx\runtimes\dnx-clr-win-x86.1.0.0-beta6\bin 到 进程路径
添加 C:\Users\buildguest.dnx\runtimes\dnx-clr-win-x86.1.0.0-beta6\bin 到 用户路径

然后我需要用这个脚本恢复解决方案的包:

dnu-restore.ps1:

dnu restore

但是在执行 dnu-restore.ps1 时出现以下错误:

[error]dnu : 术语“dnu”不是 识别为 cmdlet、函数、脚本文件或可操作的名称 程序。检查
[错误]拼写 的名称,或者如果包含路径,请验证该路径是 正确并重试。
[错误]在 C:\a\8ac4a4f6\Root\MyProject\Development\dnu-restore.ps1:1 char:1
[错误]+ dnu 恢复
[错误]+~~~
[错误] + 类别信息: ObjectNotFound: (dnu:String) [], CommandNotFoundException
[错误] + FullyQualifiedErrorId : CommandNotFoundException

构建任务:

为什么会这样?当然dnu 应该执行?有没有更好的方法来恢复 DNX 项目包?

【问题讨论】:

  • 你能在一个脚本中添加所有的构建步骤吗?我不确定 VSO 是如何开始每个构建步骤的,但可能会发生父进程在 dnvm 设置环境变量之前启动并且后续构建步骤不会获取更改的情况。
  • @VictorHurdugaci:是的,发生了一些奇怪的事情......就像帖子所说的Adding C:\Users\buildguest.dnx\runtimes\dnx-clr-win-x86.1.0.0-beta6\bin to user PATH,这意味着它应该可以用于第二个脚本......@davenewza:你还看到这个吗问题?
  • @KiranChalla 不一定。我知道一些构建服务器,比如 TeamCity,在不同的过程中运行每个步骤。因此,如果一个进程向路径添加了一些东西,第二个进程将不会选择它,因为它们具有在设置 env var 之前启动的相同父进程。

标签: asp.net-core tfsbuild azure-devops dnx .net-4.6


【解决方案1】:

使用来自this MSDN articlePrebuild.ps1 脚本解决了这个问题。

正如 Victor 所建议的,这可能是因为这些步骤在不同的进程中运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-18
    相关资源
    最近更新 更多