【发布时间】: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