First, thanks to Ian MacLean for answering my initial question about using Jscript with a <script> task!
 
I was able to get everything working until I got brave and tried to define a custom task in Jscript :)
 
I use this nant code:
 
<target name="test" description="test" >
  <call target="custom_tasks" />
  <fmexport dbfile="db" user="us" pass="pw" script="scriptit" />
  <echo message="test complete" />
 </target>

<target name="custom_tasks" description="Create Custom Tasks for use" >
  <script language="JS" prefix="superego" >
   <imports refid="thread.imports" />
   <code>
    <![CDATA[
     TaskNameAttribute("fmexport") 
     public class fmexport extends Task
     {
      protected var sFilepath : String;
      protected var sAcct : String;
      protected var sPass : String;
      protected var sScript : String;
     
      // Create the property setters
         TaskAttributeAttribute("dbfile", Required=true)  public function set dbfile(n_dbfile: String)   { sFilepath = n_dbfile; }; 
         TaskAttributeAttribute("user", Required=true)  public function set user(n_user : String)    { sAcct = n_user; };
         TaskAttributeAttribute("pass", Required=true) public function set pass(n_pass : String)   { sPass = n_pass; } ;
         TaskAttributeAttribute("script", Required=true)  public function set script(n_script : String) { sScript = n_script; }; 
          public function fmexport() { };
      protected override function ExecuteTask() : void { Log(Level.Info, sFilepath + " " + sAcct + " " + sPass + " " + sScript ); }
     } 
    ]]>
   </code>
  </script>
 </target>
And I get this result:
 
Z:\ratrace\inter\global\game\FileMaker>nant test
NAnt 0.85 (Build 0.85.1954.0; nightly; 5/8/2005)
Copyright (C) 2001-2005 Gerry Shaw
http://nant.sourceforge.net

Target framework: Microsoft .NET Framework 1.1
Target(s) specified: test

test:

custom_tasks:
 
   [script] Scanning assembly "jc-9hg7q" for extensions.
 
BUILD FAILED
 
INTERNAL ERROR
 
System.MissingMethodException: Constructor on type nantea92a6f750e34b6dbc26f44e45b7b89c+fmexport not found.
   at System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder bin
der, Object[] args, CultureInfo culture, Object[] activationAttributes)
   at System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
   at System.Reflection.Assembly.CreateInstance(String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture
, Object[] activationAttributes)
   at NAnt.Core.TaskBuilder.CreateTask() in d:\Source\nant-20050507T183440Z\src\NAnt.Core\TaskBuilder.cs:line 94
   at NAnt.Core.TypeFactory.CreateTask(XmlNode taskNode, Project proj) in d:\Source\nant20050507T183440Z\src\NAnt.Core\TypeFactory.cs:line 316
   at NAnt.Core.Project.CreateTask(XmlNode taskNode, Target target) in d:\Source\nant20050507T183440Z\src\NAnt.Core\Project.cs:line 1019
   at NAnt.Core.Target.Execute() in d:\Source\nant-20050507T183440Z\src\NAnt.Core\Target.cs:line 245
   at NAnt.Core.Project.Execute(String targetName, Boolean forceDependencies) in
 d:\Source\nant-20050507T183440Z\src\NAnt.Core\Project.cs:line 887
   at NAnt.Core.Project.Execute() in d:\Source\nant-20050507T183440Z\src\NAnt.Core\Project.cs:line 839
   at NAnt.Core.Project.Run() in d:\Source\nant-20050507T183440Z\src\NAnt.Core\Project.cs:line 924
Observations:
 
I tried this with various permutations of constructors, all with no joy.
 
Any Help would be appreciated!
 
-Norman

Reply via email to