Cruise Control解析"!" NAnt文件中的字符

MrB*_*Sky 5 cruisecontrol.net nant mstest

我有一个Cruise Control配置了一个任务来运行一个运行MSTest套件的NAnt脚本.MSTest允许我指定测试类别,因此我想指定"!Integration"(这意味着"不运行集成测试").当我从命令行运行它时,我的Nant脚本成功运行,但是当Cruise运行它时,"!Integration"指令出现乱码 - Cruise输出表明它在'!'之后插入一个换行符.字符.结果是我的所有测试都运行,包括集成测试.

从ccnet.config中提取:

<tasks>
  <nant>
    <executable>C:\nant\bin\nant.exe</executable>
    <baseDirectory>C:\MyProject\BuildDirectory</baseDirectory>
    <buildFile>MyProject.build</buildFile>
    <targetList>
       <target>CIServerBuild</target>  
    </targetList>
  </nant>
</tasks>
Run Code Online (Sandbox Code Playgroud)

从MyProject.build中提取:

<target name="CIServerBuild">
      :
    <call target="RunUnitTests" />
</target>

<target name="RunUnitTests">
    <property name="TestCategories" value="!Integration" />
    <call target="RunMSTest"  failonerror="true"/>
</target>

<target name="RunMSTest">
    <call target="BuildListOfTestContainers"  failonerror="true"/>
    <exec program="${MSTest.exe}"
        commandline=" /category:&quot;${TestCategories}&quot; ${TestContainers} /resultsfile:${MSTest.ResultsFile} /nologo "
     />
</target>
Run Code Online (Sandbox Code Playgroud)

从Cruise输出中提取:

[exec] Starting 'C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe ( /category:"!
Integration" /testcontainer:C:\TaxWise\BuildDirectory\TaxWise\TaxWise.Data.Tests\bin\Debug\TaxWise.Data.Tests.dll /testcontainer:C:\TaxWise\BuildDirectory\TaxWise\TaxWise.Domain.Tests\bin\Debug\TaxWise.Domain.Tests.dll /testcontainer:C:\TaxWise\BuildDirectory\TaxWise\TaxWise.Infrastructure.Tests\bin\Debug\TaxWise.Infrastructure.Tests.dll /resultsfile:.\TestResults\UnitTests.trx /nologo )' 
in 'C:\TaxWise\BuildDirectory'
Run Code Online (Sandbox Code Playgroud)

我试过更换'!' 性格与

'&#33;' 
Run Code Online (Sandbox Code Playgroud)

但这没有任何区别.

任何想法,任何人?

Ada*_*uss 1

我建议将 exec 任务中的命令行属性拆分为 Nant arg 元素。

http://nant.sourceforge.net/release/0.85/help/tasks/exec.html

您将拥有更大的灵活性,可读性也会增加。