Showing posts with label script. Show all posts
Showing posts with label script. Show all posts

Jan 18, 2010

The Script Task in MSBuild

As part of your build process customization, you may sometimes prefer invoking a simple piece of C# or VB code to relatively elaborate MSBuild script segments while implementing certain functionalities.
In case you are not interested in writing your own custom tasks and compiling them into a dll for these small customization needs, MSBuild Community Tasks has a Script task for such cases

Sticking to tradition, let's go with a 'hello world' example:


<Import Project="$(MSBuildExtensionsPath)/MSBuildCommunityTasks/MSBuild.Community.Tasks.Targets" />
<PropertyGroup>
  <Text1>Hello</Text1>
  
  <GetFullText>
    <![CDATA[
      public static string ScriptMain()  {
        string Text2 = "World";
        return "$(Text1)" + Text2;
      }
    ]]>
  </GetFullText>
</PropertyGroup>

<Target Name="TestScriptTask">
    <Script Language="C#" Code="$(GetFullText)">
        <Output TaskParameter="ReturnValue" PropertyName="FullText" />
    </Script>
    <Message Text="My String: $(FullText)" />
</Target>
     
The return type of ScriptMain() can be void or string.
Now, the auto-generated code and the build output would look something like this:

using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
    
public class msbc96d6fb42e75a487c93c422f4f56a72da {      
    public static string ScriptMain() {
        string Text2 = "World";
  
        return "Hello" + Text2;
    }        
}
  
Done executing task "Script".
Task "Message"
    My String: HelloWorld