Gallio is a fantastic test runner that integrates with a number of tools (like R#, which I love) and a ton of testing frameworks. So I set out to modify our NAnt build scripts to use Gallio instead of invoking tests directly with a particular testing framework. Here is how the setup went having NAnt invoke Gallio which invoked NUnit tests (Thanks to Rob Reynolds for his insights):

1) Download and unzip the Gallio distro from here: http://www.gallio.org/Downloads.aspx

2) Setup the NAnt tasks as follows (To run all tests in an assembly). You can get more info on the Gallio NAnt task properties here. The filter defaults to all but I included it for demo purposes. Error code 16 means that there were no tests. I ignored it since I was reorganizing the test suites and some didn't have tests yet.

<loadtasks assembly="\Gallio.NAntTasks.dll" />
<gallio working-directory=""
        report-types="Xml-Inline"
        report-directory=""
        report-name-format="gallio-results"
        show-reports="false"
        failonerror="false"
        verbosity="Normal"
        echo-results="false"
        filter="include *"
        result-property="GallioResult">
  <files>
    <include name=""/>
  files>
gallio>
<fail if="${GallioResult != '0' and GallioResult != '16'}" >
One or more tests failed (Error code ${GallioResult}).
Please check the log for more detailsfail>

3) Copy the \GallioBundle-x-x-x\bin\Resources folder to \CruiseControl.NET\webdashboard or another location that is accessible from the web.

4) Copy \GallioBundle-x-x-x\bin\Resources\xsl\*.xsl to \CruiseControl.NET\webdashboard\xsl. You don't actually need all those files, but who knows, that may change in the future.

5) Edit the Gallio-Report.ccnet-details.xsl and Gallio-Report.ccnet-details-condensed.xsl files in the \CruiseControl.NET\webdashboard\xsl folder from step 4. Set the cssDir, jsDir, imgDir variables to the url of the files you copied in step 3.

6) Open the \CruiseControl.NET\webdashboard\dashboard.config file and add the following entries:

<dashboard>
  ...
  <plugins>
    ...
    <buildPlugins>
      <buildReportBuildPlugin>
        <xslFileNames>
          ...
          <xslFile>xsl\Gallio-Report.ccnet-details-condensed.xslxslFile>
          ...
        xslFileNames>
      buildReportBuildPlugin>
      ...
      <xslReportBuildPlugin description="Test Summary" actionName="GallioSummary"
                  xslFileName="xsl\Gallio-Report.ccnet-details-condensed.xsl" />
      <xslReportBuildPlugin description="Test Details" actionName="GallioDetails"
                  xslFileName="xsl\Gallio-Report.ccnet-details.xsl" />
      ...
    buildPlugins>
    ...
  plugins>
dashboard>

Unfortunately Gallio doesn't currently have an email friendly report stylesheet so you'll have to roll your own.