{"id":866,"date":"2009-10-14T10:38:55","date_gmt":"2009-10-14T08:38:55","guid":{"rendered":"http:\/\/www.navision-blog.de\/2009\/10\/14\/integrating-a-fake-f-make-build-script-into-cruisecontrol-net\/"},"modified":"2023-01-01T13:05:48","modified_gmt":"2023-01-01T13:05:48","slug":"integrating-a-fake-f-make-build-script-into-cruisecontrol-net","status":"publish","type":"post","link":"http:\/\/www.navision-blog.de\/blog\/2009\/10\/14\/integrating-a-fake-f-make-build-script-into-cruisecontrol-net\/","title":{"rendered":"Integrating a &ldquo;FAKE &ndash; F# Make&rdquo; build script into CruiseControl.NET"},"content":{"rendered":"<p>Since version 0.12 the <a href=\"http:\/\/code.google.com\/p\/fake\/\">FAKE build system<\/a> provides an easy way to setup build configurations for <a href=\"http:\/\/confluence.public.thoughtworks.org\/display\/CCNET\/Welcome+to+CruiseControl.NET\">CruiseControl.NET<\/a>.<\/p>\n<blockquote>\n<p><strong>\u201cCruiseControl.NET<\/strong> is an Automated Continuous Integration server, implemented using the Microsoft .NET Framework.\u201d<\/p>\n<p align=\"right\">[<a href=\"http:\/\/confluence.public.thoughtworks.org\/display\/CCNET\/Welcome+to+CruiseControl.NET\">thoughtworks.org<\/a>] <\/p>\n<\/blockquote>\n<p>In this article I will show you how you can set up a FAKE build script in CruiseControl.NET. We will use the CalculatorSample which you can download from the <a href=\"http:\/\/code.google.com\/p\/fake\/downloads\/list\">FAKE Download page<\/a>.<\/p>\n<p>If you want to know how this build script works and how you could create one for your own projects please read the <a href=\"http:\/\/www.navision-blog.de\/2009\/04\/01\/getting-started-with-fake-a-f-sharp-make-tool\/\">\u201cGetting started with FAKE\u201d-tutorial<\/a>.<\/p>\n<p>If you want to set up \u201cFAKE \u2013 F# Make\u201d build configurations in TeamCity please read <a href=\"http:\/\/www.navision-blog.de\/2009\/04\/15\/integrate-a-fake-f-make-build-script-into-teamcity\/\">\u201cIntegrating a &quot;FAKE \u2013 F# Make&quot; build script into TeamCity<\/a>\u201d.<\/p>\n<h5>Installing CruiseControl.NET<\/h5>\n<p>You can download CruiseControl.NET from <a href=\"http:\/\/confluence.public.thoughtworks.org\/display\/CCNET\/Download\">thoughtworks.org<\/a>. After the installation process (<a href=\"http:\/\/confluence.public.thoughtworks.org\/display\/CCNET\/Basic+Installation\">further instructions<\/a>) you should see an empty dashboard:<\/p>\n<p><a href=\"http:\/\/www.navision-blog.de\/images\/IntegratingaFAKEFMakebuildscriptinto.net_7967\/image.png\"><img loading=\"lazy\" class=\"bordered\" title=\"CruiseControl.NET Dashboard\" border=\"0\" alt=\"CruiseControl.NET Dashboard\" src=\"http:\/\/www.navision-blog.de\/images\/IntegratingaFAKEFMakebuildscriptinto.net_7967\/image_thumb.png\" width=\"500\" height=\"231\" \/><\/a> <\/p>\n<h5>Installing Subversion<\/h5>\n<p>The CalculatorSample is using Subversion (SVN) for <a href=\"http:\/\/en.wikipedia.org\/wiki\/Revision_control\">SourceControl<\/a>, so we need to download SVN from <a title=\"http:\/\/subversion.tigris.org\/servlets\/ProjectDocumentList?folderID=8100\" href=\"http:\/\/subversion.tigris.org\/servlets\/ProjectDocumentList?folderID=8100\">subversion.tigris.org<\/a>. I\u2019m using the \u201cWindows MSI installer with the basic win32 binaries\u201d and installed them under \u201cc:\\Program Files (x86)\\Subversion\\\u201d.<\/p>\n<h5>Installing FxCop<\/h5>\n<p>The CalculatorSample is using <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/bb429476%28VS.80%29.aspx\">FxCop<\/a>, so we need to <a href=\"http:\/\/www.microsoft.com\/downloads\/details.aspx?familyid=9AEAA970-F281-4FB0-ABA1-D59D7ED09772&amp;displaylang=en\">download<\/a> and install it next.<\/p>\n<blockquote>\n<p>\u201cFxCop is an application that analyzes managed code assemblies (code that targets the .NET Framework common language runtime) and reports information about the assemblies, such as possible design, localization, performance, and security improvements. Many of the issues concern violations of the programming and design rules set forth in the <a href=\"http:\/\/go.microsoft.com\/fwlink\/?LinkId=70287\">Design Guidelines<\/a> for Class Library Developers, which are the Microsoft guidelines for writing robust and easily maintainable code by using the .NET Framework.\u201d<\/p>\n<p align=\"right\">[<a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/bb429476%28VS.80%29.aspx\">MSDN<\/a>]<\/p>\n<\/blockquote>\n<h5>Creating a FAKE Project<\/h5>\n<p>Now create a new folder for the CalculatorSample sources. I\u2019m using \u201c<strong>d:\\Calculator\\<\/strong>\u201d for the rest of the article.<\/p>\n<p>The next step is to modify the CruiseControl.NET config file (\u201cc:\\Program Files (x86)\\CruiseControl.NET\\server\\ccnet.config\u201d on my machine):<\/p>\n<div style=\"font-family: courier new; background: white; color: black; font-size: 7pt\">\n<p style=\"margin: 0px\"><span style=\"color: blue\">&lt;<\/span><span style=\"color: #a31515\">cruisecontrol<\/span><span style=\"color: blue\">&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160; &lt;<\/span><span style=\"color: #a31515\">project<\/span><span style=\"color: blue\">&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160;&#160;&#160; &lt;<\/span><span style=\"color: #a31515\">name<\/span><span style=\"color: blue\">&gt;<\/span>CalculatorExample<span style=\"color: blue\">&lt;\/<\/span><span style=\"color: #a31515\">name<\/span><span style=\"color: blue\">&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160;&#160;&#160; &lt;<\/span><span style=\"color: #a31515\">triggers<\/span><span style=\"color: blue\">&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160;&#160;&#160;&#160;&#160;&#160; &lt;<\/span><span style=\"color: #a31515\">intervalTrigger<\/span><span style=\"color: blue\"> <\/span><span style=\"color: red\">name<\/span><span style=\"color: blue\">=<\/span>&quot;<span style=\"color: blue\">continuous<\/span>&quot;<span style=\"color: blue\"> <\/span><span style=\"color: red\">seconds<\/span><span style=\"color: blue\">=<\/span>&quot;<span style=\"color: blue\">30<\/span>&quot;<span style=\"color: blue\"> <\/span><span style=\"color: red\">initialSeconds<\/span><span style=\"color: blue\">=<\/span>&quot;<span style=\"color: blue\">30<\/span>&quot;<span style=\"color: blue\">\/&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160;&#160;&#160; &lt;\/<\/span><span style=\"color: #a31515\">triggers<\/span><span style=\"color: blue\">&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160;&#160;&#160; &lt;<\/span><span style=\"color: #a31515\">sourcecontrol<\/span><span style=\"color: blue\"> <\/span><span style=\"color: red\">type<\/span><span style=\"color: blue\">=<\/span>&quot;<span style=\"color: blue\">svn<\/span>&quot;<span style=\"color: blue\">&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160;&#160;&#160;&#160;&#160; &lt;<\/span><span style=\"color: #a31515\">executable<\/span><span style=\"color: blue\">&gt;<\/span>c:\\Program Files (x86)\\Subversion\\bin\\svn.exe<span style=\"color: blue\">&lt;\/<\/span><span style=\"color: #a31515\">executable<\/span><span style=\"color: blue\">&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160;&#160;&#160;&#160;&#160; &lt;<\/span><span style=\"color: #a31515\">workingDirectory<\/span><span style=\"color: blue\">&gt;<\/span>d:\\Calculator\\<span style=\"color: blue\">&lt;\/<\/span><span style=\"color: #a31515\">workingDirectory<\/span><span style=\"color: blue\">&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160;&#160;&#160;&#160;&#160; &lt;<\/span><span style=\"color: #a31515\">trunkUrl<\/span><span style=\"color: blue\">&gt;<\/span>http:\/\/fake.googlecode.com\/svn\/trunk\/Samples\/Calculator\/<span style=\"color: blue\">&lt;\/<\/span><span style=\"color: #a31515\">trunkUrl<\/span><span style=\"color: blue\">&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160;&#160;&#160; &lt;\/<\/span><span style=\"color: #a31515\">sourcecontrol<\/span><span style=\"color: blue\">&gt;&#160;&#160;&#160; <\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160;&#160;&#160; &lt;<\/span><span style=\"color: #a31515\">tasks<\/span><span style=\"color: blue\">&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160;&#160;&#160;&#160;&#160; &lt;<\/span><span style=\"color: #a31515\">exec<\/span><span style=\"color: blue\">&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;<\/span><span style=\"color: #a31515\">executable<\/span><span style=\"color: blue\">&gt;<\/span>d:\\Calculator\\tools\\Fake\\Fake.exe<span style=\"color: blue\">&lt;\/<\/span><span style=\"color: #a31515\">executable<\/span><span style=\"color: blue\">&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;<\/span><span style=\"color: #a31515\">baseDirectory<\/span><span style=\"color: blue\">&gt;<\/span>d:\\Calculator\\<span style=\"color: blue\">&lt;\/<\/span><span style=\"color: #a31515\">baseDirectory<\/span><span style=\"color: blue\">&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;<\/span><span style=\"color: #a31515\">buildArgs<\/span><span style=\"color: blue\">&gt;<\/span>completeBuild.fsx<span style=\"color: blue\">&lt;\/<\/span><span style=\"color: #a31515\">buildArgs<\/span><span style=\"color: blue\">&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160;&#160;&#160;&#160;&#160; &lt;\/<\/span><span style=\"color: #a31515\">exec<\/span><span style=\"color: blue\">&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160;&#160;&#160; &lt;\/<\/span><span style=\"color: #a31515\">tasks<\/span><span style=\"color: blue\">&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160;&#160;&#160; &lt;<\/span><span style=\"color: #a31515\">publishers<\/span><span style=\"color: blue\">&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160;&#160;&#160;&#160;&#160; &lt;<\/span><span style=\"color: #a31515\">merge<\/span><span style=\"color: blue\">&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;<\/span><span style=\"color: #a31515\">files<\/span><span style=\"color: blue\">&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;<\/span><span style=\"color: #a31515\">file<\/span><span style=\"color: blue\">&gt;<\/span>d:\\Calculator\\test\\FXCopResults.xml<span style=\"color: blue\">&lt;\/<\/span><span style=\"color: #a31515\">file<\/span><span style=\"color: blue\">&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;<\/span><span style=\"color: #a31515\">file<\/span><span style=\"color: blue\">&gt;<\/span>d:\\Calculator\\test\\TestResults.xml<span style=\"color: blue\">&lt;\/<\/span><span style=\"color: #a31515\">file<\/span><span style=\"color: blue\">&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;<\/span><span style=\"color: #a31515\">file<\/span><span style=\"color: blue\">&gt;<\/span>d:\\Calculator\\output\\Results.xml<span style=\"color: blue\">&lt;\/<\/span><span style=\"color: #a31515\">file<\/span><span style=\"color: blue\">&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;\/<\/span><span style=\"color: #a31515\">files<\/span><span style=\"color: blue\">&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160;&#160;&#160;&#160;&#160; &lt;\/<\/span><span style=\"color: #a31515\">merge<\/span><span style=\"color: blue\">&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160;&#160;&#160;&#160;&#160; &lt;<\/span><span style=\"color: #a31515\">xmllogger<\/span><span style=\"color: blue\"> \/&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160;&#160;&#160; &lt;\/<\/span><span style=\"color: #a31515\">publishers<\/span><span style=\"color: blue\">&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160; &lt;\/<\/span><span style=\"color: #a31515\">project<\/span><span style=\"color: blue\">&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&lt;\/<\/span><span style=\"color: #a31515\">cruisecontrol<\/span><span style=\"color: blue\">&gt;<\/span><\/p>\n<\/p>\n<\/div>\n<p>In this configuration I set up a trigger which checks every 30 sec. for changes in my CalculatorSample project. <\/p>\n<p>If SVN finds changes FAKE.exe is called with my build script (completeBuild.fsx). <\/p>\n<p>After the build I want to merge the FxCop and NUnit output files with my build results to create a build report.<\/p>\n<h5>Configuring the dashboard<\/h5>\n<p>In order to provide a nicer output on the dashboard we need to modify the BuildPlugins section in the dashboard.config file (\u201cc:\\Program Files (x86)\\CruiseControl.NET\\webdashboard\\dashboard.config\u201d on my machine):<\/p>\n<div style=\"font-family: courier new; background: white; color: black; font-size: 10pt\">\n<p style=\"margin: 0px\"><span style=\"color: blue\">&lt;<\/span><span style=\"color: #a31515\">buildPlugins<\/span><span style=\"color: blue\">&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160; &lt;<\/span><span style=\"color: #a31515\">buildReportBuildPlugin<\/span><span style=\"color: blue\">&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160;&#160;&#160; &lt;<\/span><span style=\"color: #a31515\">xslFileNames<\/span><span style=\"color: blue\">&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160;&#160;&#160;&#160;&#160; &lt;<\/span><span style=\"color: #a31515\">xslFile<\/span><span style=\"color: blue\">&gt;<\/span>xsl\\header.xsl<span style=\"color: blue\">&lt;\/<\/span><span style=\"color: #a31515\">xslFile<\/span><span style=\"color: blue\">&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160;&#160;&#160;&#160;&#160; &lt;<\/span><span style=\"color: #a31515\">xslFile<\/span><span style=\"color: blue\">&gt;<\/span>xsl\\modifications.xsl<span style=\"color: blue\">&lt;\/<\/span><span style=\"color: #a31515\">xslFile<\/span><span style=\"color: blue\">&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160;&#160;&#160;&#160;&#160; &lt;<\/span><span style=\"color: #a31515\">xslFile<\/span><span style=\"color: blue\">&gt;<\/span>xsl\\NCoverSummary.xsl<span style=\"color: blue\">&lt;\/<\/span><span style=\"color: #a31515\">xslFile<\/span><span style=\"color: blue\">&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160;&#160;&#160;&#160;&#160; &lt;<\/span><span style=\"color: #a31515\">xslFile<\/span><span style=\"color: blue\">&gt;<\/span>xsl\\fxcop-summary_1_36.xsl<span style=\"color: blue\">&lt;\/<\/span><span style=\"color: #a31515\">xslFile<\/span><span style=\"color: blue\">&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160;&#160;&#160;&#160;&#160; &lt;<\/span><span style=\"color: #a31515\">xslFile<\/span><span style=\"color: blue\">&gt;<\/span>xsl\\unittests.xsl<span style=\"color: blue\">&lt;\/<\/span><span style=\"color: #a31515\">xslFile<\/span><span style=\"color: blue\">&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160;&#160;&#160;&#160;&#160; &lt;<\/span><span style=\"color: #a31515\">xslFile<\/span><span style=\"color: blue\">&gt;<\/span>xsl\\nant.xsl<span style=\"color: blue\">&lt;\/<\/span><span style=\"color: #a31515\">xslFile<\/span><span style=\"color: blue\">&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160;&#160;&#160; &lt;\/<\/span><span style=\"color: #a31515\">xslFileNames<\/span><span style=\"color: blue\">&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160; &lt;\/<\/span><span style=\"color: #a31515\">buildReportBuildPlugin<\/span><span style=\"color: blue\">&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160; &lt;<\/span><span style=\"color: #a31515\">buildLogBuildPlugin<\/span><span style=\"color: blue\"> \/&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160; &lt;<\/span><span style=\"color: #a31515\">xslReportBuildPlugin<\/span><span style=\"color: blue\"> <\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160;&#160;&#160;&#160; <\/span><span style=\"color: red\">description<\/span><span style=\"color: blue\">=<\/span>&quot;<span style=\"color: blue\">NCover Report<\/span>&quot;<span style=\"color: blue\"> <\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160;&#160;&#160;&#160; <\/span><span style=\"color: red\">actionName<\/span><span style=\"color: blue\">=<\/span>&quot;<span style=\"color: blue\">NCoverBuildReport<\/span>&quot;<span style=\"color: blue\"> <\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160;&#160;&#160;&#160; <\/span><span style=\"color: red\">xslFileName<\/span><span style=\"color: blue\">=<\/span>&quot;<span style=\"color: blue\">xsl\\NCover.xsl<\/span>&quot;<span style=\"color: blue\">&gt;&lt;\/<\/span><span style=\"color: #a31515\">xslReportBuildPlugin<\/span><span style=\"color: blue\">&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160; &lt;<\/span><span style=\"color: #a31515\">xslReportBuildPlugin<\/span><span style=\"color: blue\"> <\/span><span style=\"color: red\">description<\/span><span style=\"color: blue\">=<\/span>&quot;<span style=\"color: blue\">FxCop Report<\/span>&quot;<\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160;&#160;&#160;&#160; <\/span><span style=\"color: red\">actionName<\/span><span style=\"color: blue\">=<\/span>&quot;<span style=\"color: blue\">FxCopBuildReport<\/span>&quot;<\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160;&#160;&#160;&#160; <\/span><span style=\"color: red\">xslFileName<\/span><span style=\"color: blue\">=<\/span>&quot;<span style=\"color: blue\">xsl\\fxcop-report_1_36.xsl<\/span>&quot;<span style=\"color: blue\"> \/&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160; &lt;<\/span><span style=\"color: #a31515\">xslReportBuildPlugin<\/span><span style=\"color: blue\"> <\/span><span style=\"color: red\">description<\/span><span style=\"color: blue\">=<\/span>&quot;<span style=\"color: blue\">NUnit Report<\/span>&quot;<\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160;&#160;&#160;&#160; <\/span><span style=\"color: red\">actionName<\/span><span style=\"color: blue\">=<\/span>&quot;<span style=\"color: blue\">NUnitBuildReport<\/span>&quot;<\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&#160;&#160;&#160;&#160; <\/span><span style=\"color: red\">xslFileName<\/span><span style=\"color: blue\">=<\/span>&quot;<span style=\"color: blue\">xsl\\tests.xsl<\/span>&quot;<span style=\"color: blue\"> \/&gt;<\/span><\/p>\n<p style=\"margin: 0px\"><span style=\"color: blue\">&lt;\/<\/span><span style=\"color: #a31515\">buildPlugins<\/span><span style=\"color: blue\">&gt;<\/span><\/p>\n<\/p>\n<\/div>\n<p>As you can see we use the nant.xsl to transform the FAKE output to HTML.<\/p>\n<h5>Starting the build<\/h5>\n<p>Now if everything is configured correctly, you can tell CruiseControl.NET to run your build (press \u201cStart\u201d for your build project on the dashboard):<\/p>\n<p><img loading=\"lazy\" class=\"bordered\" title=\"Press Start on the dashboard\" alt=\"Press Start on the dashboard\" src=\"http:\/\/www.navision-blog.de\/images\/IntegratingaFAKEFMakebuildscriptinto.net_7967\/image_3.png\" width=\"500\" height=\"106\" \/> <\/p>\n<p>Now CruiseControl.NET should use SVN to checkout the CalculatorSample sources and run the build. The output on the project page for build 1 should look like this:<\/p>\n<p><a href=\"http:\/\/www.navision-blog.de\/images\/IntegratingaFAKEFMakebuildscriptinto.net_7967\/image_4.png\"><img loading=\"lazy\" class=\"bordered\" title=\"Build output\" alt=\"Build output\" src=\"http:\/\/www.navision-blog.de\/images\/IntegratingaFAKEFMakebuildscriptinto.net_7967\/image_thumb_3.png\" width=\"500\" height=\"388\" \/><\/a> <\/p>\n<p><a href=\"http:\/\/www.navision-blog.de\/images\/IntegratingaFAKEFMakebuildscriptinto.net_7967\/image_5.png\"><img loading=\"lazy\" class=\"bordered\" title=\"Build output 2\" border=\"0\" alt=\"Build output 2\" src=\"http:\/\/www.navision-blog.de\/images\/IntegratingaFAKEFMakebuildscriptinto.net_7967\/image_thumb_4.png\" width=\"500\" height=\"388\" \/><\/a> <\/p>\n<p>You can also inspect the NUnit and FxCop results:<\/p>\n<p>&#160;<a href=\"http:\/\/www.navision-blog.de\/images\/IntegratingaFAKEFMakebuildscriptinto.net_7967\/image_6.png\"><img loading=\"lazy\" class=\"bordered\" title=\"NUnit zest results\" border=\"0\" alt=\"NUnit zest results\" src=\"http:\/\/www.navision-blog.de\/images\/IntegratingaFAKEFMakebuildscriptinto.net_7967\/image_thumb_5.png\" width=\"500\" height=\"236\" \/><\/a> <\/p>\n<p><a href=\"http:\/\/www.navision-blog.de\/images\/IntegratingaFAKEFMakebuildscriptinto.net_7967\/image_7.png\"><img loading=\"lazy\" class=\"bordered\" title=\"FxCop results\" border=\"0\" alt=\"FxCop results\" src=\"http:\/\/www.navision-blog.de\/images\/IntegratingaFAKEFMakebuildscriptinto.net_7967\/image_thumb_6.png\" width=\"500\" height=\"249\" \/><\/a><\/p>\n<p>Please feel free to give feedback if you have any problems with this article.<\/p>\n<div style=\"position:absolute; left:-9044px;\"><a href=\"https:\/\/denmarkapoteke.com\">https:\/\/denmarkapoteke.com<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Since version 0.12 the FAKE build system provides an easy way to setup build configurations for CruiseControl.NET. \u201cCruiseControl.NET is an Automated Continuous Integration server, implemented using the Microsoft .NET Framework.\u201d [thoughtworks.org] In this article I will show you how you can set up a FAKE build script in CruiseControl.NET. We will use the CalculatorSample which [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[448,546],"tags":[571,492,570,569,664,545,544],"_links":{"self":[{"href":"http:\/\/www.navision-blog.de\/blog\/wp-json\/wp\/v2\/posts\/866"}],"collection":[{"href":"http:\/\/www.navision-blog.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.navision-blog.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.navision-blog.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.navision-blog.de\/blog\/wp-json\/wp\/v2\/comments?post=866"}],"version-history":[{"count":6,"href":"http:\/\/www.navision-blog.de\/blog\/wp-json\/wp\/v2\/posts\/866\/revisions"}],"predecessor-version":[{"id":2046,"href":"http:\/\/www.navision-blog.de\/blog\/wp-json\/wp\/v2\/posts\/866\/revisions\/2046"}],"wp:attachment":[{"href":"http:\/\/www.navision-blog.de\/blog\/wp-json\/wp\/v2\/media?parent=866"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.navision-blog.de\/blog\/wp-json\/wp\/v2\/categories?post=866"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.navision-blog.de\/blog\/wp-json\/wp\/v2\/tags?post=866"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}