如何在 CCNet 上设置 dnx 构建? dnu 运行但失败 "dnx not found"

How to set up dnx builds on CCNet? dnu runs but fails with "dnx not found"

我正在尝试在 CCNet 上构建一些 ASPNetv5。我添加了一个这样的执行块:

<cb:define name="DnuPackageRestore">
    <exec>
        <executable>dnu</executable>
        <cb:ifdef name="SourceFolder">
            <baseDirectory>$(SourceFolder)</baseDirectory>
        </cb:ifdef>
        <cb:else>
            <baseDirectory>$(WorkingPath)$(ProjectName)</baseDirectory>
        </cb:else>
        <description>DNU Package Restore</description>
        <buildArgs>restore</buildArgs>
    </exec>
</cb:define>

出于某些 st运行ge 原因,CCNet 无法获取 PATH 中的 .cmd 文件,因此我将 executablednu 更改为 dnu.cmd。它现在运行 dnu 正常,但立即崩溃说找不到 dnx:

2016-03-02 14:17:19,073 [SuperThing:DEBUG] Starting process [dnu.cmd] in working directory [D:\CI\W\SuperThing] with arguments [restore]
2016-03-02 14:17:19,076 [SuperThing:DEBUG] Not setting PriorityClass on [D:\CI\W\SuperThing\dnu.cmd] to default Normal
2016-03-02 14:17:19,091 [13:DEBUG] [SuperThing dnu.cmd] '"D:\CI\W\SuperThing\dnx"' is not recognized as an internal or external command,
2016-03-02 14:17:19,091 [13:DEBUG] [SuperThing dnu.cmd] operable program or batch file.

它声称正在 SuperThing 中寻找 dnx,但由于它对 dnu.cmd 的描述相同,我认为这是一个误会。

如果我 PowerShell 以同一用户身份远程进入服务器,一切正常(我安装了 dnvm,让它安装 1.0.0-rc1-update1 和我 运行 dnvm set default -p)。

CCNet 执行此 dnu.cmd 的方式似乎有些奇怪,导致它失败(我猜是路径在某处丢失了吗?)。

一般来说,您不能使用标准 Process.Start 执行“.cmd”文件(不确定 CCNet 是否这样做)。相反,您需要使用参数 /c [path to cmd file] 执行 cmd。也许尝试一下,看看是否能解决问题?