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?
                                          
_________________________________________________________________
Browse profiles for FREE! Meet local singles online.
http://clk.atdmt.com/NMN/go/150855801/direct/01/
------------------------------------------------------------------------------
_______________________________________________
NAnt-users mailing list
NAnt-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nant-users

Reply via email to