Hi Simon,

CCNet is generally used for automated/unattended builds. What is the core
problem you are trying to solve with this solution, ie, why do you want user
input during a CCNet build?
---
Chris.

Continuous improvement is better than delayed perfection. - Mark Twain


On Tue, Apr 20, 2010 at 8:17 PM, Simon H <yo...@live.com> wrote:

>
>  "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?" This is not a
> viable solution due to security considerations.
>
>
> ------------------------------
> Date: Tue, 20 Apr 2010 20:03:58 -0700
> From: rongrabow...@yahoo.com
>
> To: nant-users@lists.sourceforge.net
> 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 profiles for 
> FREE!<http://clk.atdmt.com/NMN/go/150855801/direct/01/>
>
> ------------------------------
> Australia's #1 job site If It Exists, You'll Find it on 
> SEEK<http://clk.atdmt.com/NMN/go/157639755/direct/01/>
>
>
> ------------------------------------------------------------------------------
>
> _______________________________________________
> NAnt-users mailing list
> NAnt-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/nant-users
>
>
------------------------------------------------------------------------------
_______________________________________________
NAnt-users mailing list
NAnt-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nant-users

Reply via email to