0

在进行干净构建之前,我在 ccnet.config 文件中使用命令行预构建任务来删除 thw 工作目录的内容。

      <prebuild>
          <exec>
            <executable>%SYSTEM32%\cmd.exe</executable>
            <buildArgs>/c "if exist "C:\CruiseControl\Working" rd /s /q "C:\CruiseControl\Working""</buildArgs>
          </exec>
      </prebuild>    

问题是我得到一个错误:

System.IO.IOException:无法执行文件 [C:\CruiseControl\Working\cmd.exe]。

它似乎在工作文件夹中寻找 cmd.exe。所以我尝试添加 cmd.exe 的路径,如下所示:

     <prebuild>
          <exec>
            <executable>%SYSTEM32%\cmd.exe</executable>
            <buildArgs>/c "if exist "C:\CruiseControl\Working" rd /s /q "C:\CruiseControl\Working""</buildArgs>
          </exec>
      </prebuild>

任何帮助都会很棒?

4

3 回答 3

2

我找到了原始问题的答案:

我只需将 cleanCopy true 放在 sourcecontrol 块中。

      <sourcecontrol type="svn">                                            
        <trunkUrl>TRUNK-URL</trunkUrl>                
        <executable>SVN.EXE</executable>           
        <username>TEST</username>                                         
        <password>TEST</password> 
        <cleanCopy>true</cleanCopy>         
      </sourcecontrol>    
于 2010-11-04T16:14:01.023 回答
1

cmd.exe 所在的路径在您的 %PATH% 环境变量中。您不需要显式设置它(您可以通过输入cmd执行提示来验证它):

<prebuild>
  <exec>
    <executable>cmd.exe</executable>
    <buildArgs>/c "if exist "C:\CruiseControl\Working" rd /s /q "C:\CruiseControl\Working""</buildArgs>
  </exec>
</prebuild>

至于目录使用问题。我认为您希望删除 C:\CruiseControl\Working 的子目录,而不是整个 Working。也可能是 svn 或其他进程正在处理它。如果你跑步会发生什么

if exist "C:\CruiseControl\Working" rd /s /q "C:\CruiseControl\Working"

直接在cmd中?

于 2010-11-04T15:38:58.687 回答
1

我在一个块中对 cmd.exe 有同样的问题。我已cleanCopy在 Source Gear Vault 的多源控制块中设置为 true。除了将我的单行命令放入 .cmd 文件之外,这里或其他任何地方都没有解决这个问题,但我宁愿不必为我需要从命令提示符运行的每一行创建一个 .cmd。

于 2011-01-05T20:58:08.727 回答