วันศุกร์ที่ 23 เมษายน พ.ศ. 2553

Autobuild Nant in Console

Another Example to use Autobild Nant in console.

using System.Threading;

namespace AutobuildConsole
{
class Program
{
static void Main( string[] args )
{
//Console.Write( @"C:\WebBuild\nant-0.86-beta1\bin\NAnt.exe -help" );

//Console.ReadKey();

string commandLine = @"C:\WebBuild\nant-0.86-beta1\bin\NAnt.exe -help";

ExecuteCmd exe = new ExecuteCmd();
exe.ExecuteCommandSync( commandLine );
//exe.ExecuteCommandAsync( commandLine );

//Console.WriteLine( "\nDone !" );
Console.ReadLine();
}

public class ExecuteCmd
{

#region ExecuteCommand Sync and Async

///

/// Executes a shell command synchronously.

///


/// string command

/// string, as output of the command.

public void ExecuteCommandSync( object command )
{

try
{

// create the ProcessStartInfo using "cmd" as the program to be run, and "/c " as the parameters.

// Incidentally, /c tells cmd that we want it to execute the command that follows, and then exit.

System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo( "cmd", "/c " + command );

// The following commands are needed to redirect the standard output.

//This means that it will be redirected to the Process.StandardOutput StreamReader.

procStartInfo.RedirectStandardOutput = true;

procStartInfo.UseShellExecute = false;

// Do not create the black window.

procStartInfo.CreateNoWindow = true;

// Now we create a process, assign its ProcessStartInfo and start it

System.Diagnostics.Process proc = new System.Diagnostics.Process();

proc.StartInfo = procStartInfo;

proc.Start();



// Get the output into a string

string result = proc.StandardOutput.ReadToEnd();



// Display the command output.

Console.WriteLine( result );

}

catch (Exception objException)
{

// Log the exception

}

}



///

/// Execute the command Asynchronously.

///


/// string command.

public void ExecuteCommandAsync( string command )
{

try
{

//Asynchronously start the Thread to process the Execute command request.

Thread objThread = new Thread( new ParameterizedThreadStart( ExecuteCommandSync ) );

//Make the thread as background thread.

objThread.IsBackground = true;

//Set the Priority of the thread.

objThread.Priority = ThreadPriority.AboveNormal;

//Start the thread.

objThread.Start( command );

}

catch (ThreadStartException objException)
{

// Log the exception

}

catch (ThreadAbortException objException)
{

// Log the exception

}

catch (Exception objException)
{

// Log the exception

}

}

#endregion

}
}
}

ไม่มีความคิดเห็น: