【问题标题】:CCNet - prebuild task cmd.exe?CCNet - 预构建任务 cmd.exe?
【发布时间】:2010-11-04 15:24:47
【问题描述】:

我在 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>

任何帮助都会很棒?

【问题讨论】:

    标签: continuous-integration cruisecontrol.net cmd prebuild


    【解决方案1】:

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

    我只需将 cleanCopy true 放在源代码控制块中。

          <sourcecontrol type="svn">                                            
            <trunkUrl>TRUNK-URL</trunkUrl>                
            <executable>SVN.EXE</executable>           
            <username>TEST</username>                                         
            <password>TEST</password> 
            <cleanCopy>true</cleanCopy>         
          </sourcecontrol>    
    

    【讨论】:

      【解决方案2】:

      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中?

      【讨论】:

      • 如果我直接在 cmd 中运行上述命令,它会删除文件夹内容。这就是我想要它做的。我仍然收到错误:该进程无法访问该文件,因为它正在被另一个进程使用。
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2011-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-04
        • 1970-01-01
        • 2010-09-05
        • 2011-05-30
        相关资源
        最近更新 更多