One of the more recent editions of ccnet allows prompting the user for parameters when a build is forced.
http://confluence.public.thoughtworks.org/display/CCNET/CCNet+1.5+CTP+Releas e+Notes see the "Dynamic Parameters" section. From: Ron Grabowski [mailto:rongrabow...@yahoo.com] Sent: Tuesday, April 20, 2010 11:04 PM To: nant Subject: Re: [NAnt-users] C# sharp scripting and NAnt + CCNet How will ccnet accept user input if its running as a service on an unattended build server? Can you store the username, password, an database in a database and have the nant script look at that if a console isn't available? _____ From: Simon H <yo...@live.com> To: nant-users@lists.sourceforge.net Sent: Tue, April 20, 2010 10:32:20 PM Subject: [NAnt-users] C# sharp scripting and NAnt + CCNet Hi guys, I have a C# script within my NAnt build file which allows me to accept user input from the commandline. A truncutated excerpt of the NAnt build file is: ... <property name="username" value="" /> <property name="password" value="" /> <property name="database" value="" /> ... <target name="menu"> <script language="C#" mainclass="GetInput"> <code> <![CDATA[ class GetInput { public static void ScriptMain(Project project) { Console.Clear(); Console.WriteLine("========================================================= =========="); Console.WriteLine("Welcome to the Compile and Deploy Oracle Forms and Reports Facility"); Console.WriteLine("========================================================= =========="); Console.Write("Please enter username: "); project.Properties["username"] = Console.ReadLine(); Console.WriteLine(); Console.Write("Please enter password: "); project.Properties["password"] = Console.ReadLine(); Console.WriteLine(); Console.Write("Please enter database: "); project.Properties["database"] = Console.ReadLine(); Console.WriteLine(); ... ]]> </code> </script> </target> When I run this build file from the commandline, it works perfectly. However, when I call this build file from CCNet it does not work. The only reason for this I can think of is that when CCNet calls the NAnt script, it is not sure how to pass the C# script calls to the System.Console class to the commandline. I'm not sure how to do this though. I've also been playing around with the idea of the C# script opening a new instance of cmd.exe and then trying to execute the remainder of the script. >From searches on Google, I found the following solution that works as a C# class: using System; using System.Windows.Forms; using System.Text; using System.IO; using System.Runtime.InteropServices; using Microsoft.Win32.SafeHandles; class Program { [DllImport("kernel32.dll", EntryPoint = "GetStdHandle", SetLastError = true, CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] private static extern IntPtr GetStdHandle(int nStdHandle); [DllImport("kernel32.dll", EntryPoint = "AllocConsole", SetLastError = true, CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] private static extern int AllocConsole(); private const int STD_OUTPUT_HANDLE = -11; private const int MY_CODE_PAGE = 437; private static string deployment = "\\\\vm-osb-oasd\\sohaan"; static void Main(string[] args) { AllocConsole(); IntPtr stdHandle = GetStdHandle(STD_OUTPUT_HANDLE); SafeFileHandle safeFileHandle = new SafeFileHandle(stdHandle, true); FileStream fileStream = new FileStream(safeFileHandle, FileAccess.Write); Encoding encoding = System.Text.Encoding.GetEncoding(MY_CODE_PAGE); StreamWriter standardOutput = new StreamWriter(fileStream, encoding); standardOutput.AutoFlush = true; Console.SetOut(standardOutput); Console.Clear(); Console.WriteLine("========================================================= =========="); Console.WriteLine("Welcome to the Compile and Deploy Oracle Forms and Reports Facility"); Console.WriteLine("========================================================= =========="); Console.Write("Please enter username: "); string username = Console.ReadLine(); .... } } This works perfectly in a C# environment. However, I do not know how to embed it within a NAnt script correctly...From what I know about NAnt, I may need to create an extension, but am uncertain of how to go about this. Can anyone help me out? _____ Meet local singles online. Browse <http://clk.atdmt.com/NMN/go/150855801/direct/01/> profiles for FREE!
------------------------------------------------------------------------------
_______________________________________________ NAnt-users mailing list NAnt-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/nant-users