Hi Igor,

I've tracked down what is causing this - we changed targetList from being a
field to a property in the nant task. Unfortunately this is now breaking the
code for setting the value using the dynamic values :-(

Since the problem is with the setting of the values there is no work around
for it - we will need to fix the code.


Craig

-----Original Message-----
From: [email protected] [mailto:[email protected]] On
Behalf Of Igor Markovic
Sent: Friday, 28 January 2011 3:36 a.m.
To: ccnet-user
Subject: [ccnet-user] problems with dynamic valueparameters since I use
ccnet 1.6 release

Since I upgraded to ccnet 1.6 I have problems using dynamic parameters
in a nant task. It did work correctly with the 1.5 release. I defined
the following parameter in my project:

      <parameters>
        <selectParameter name="BuildType">
          <allowedValues>
            <value name="NightlyBuild">NightlyBuild</value>
            <value name="IncrementalBuild">IncrementalBuild</value>
          </allowedValues>
          <default>IncrementalBuild</default>
        </selectParameter>
      </parameters>

When I add a task like:

    <exec executable="cmd.exe" buildArgs="/C echo $[BuildType]"/>

It will work and the output will be:

--------------------
[Workstation (Release):DEBUG] Starting process [cmd.exe] in working
directory [D:\CruiseControl\Workstation (Release)\Sources] with
arguments [/C echo IncrementalBuild]
[Workstation (Release):DEBUG] Not setting PriorityClass on [D:
\CruiseControl\Workstation (Release)\Sources\cmd.exe] to default
Normal
[10:DEBUG] [Workstation (Release) cmd.exe] IncrementalBuild
--------------------

But when I use the dynamic parameter in my ant task it will throw an
exception.

--------------------
System.Reflection.TargetParameterCountException: Parameter count
mismatch.
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj,
BindingFlags invokeAttr, Binder binder, Object[] parameters,
CultureInfo culture, Boolean skipVisibilityChecks)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj,
BindingFlags invokeAttr, Binder binder, Object[] parameters,
CultureInfo culture)
   at System.Reflection.RuntimePropertyInfo.SetValue(Object obj,
Object value, BindingFlags invokeAttr, Binder binder, Object[] index,
CultureInfo culture)
   at System.Reflection.RuntimePropertyInfo.SetValue(Object obj,
Object value, Object[] index)
   at
ThoughtWorks.CruiseControl.Core.Tasks.DynamicValueUtility.PropertyValue.Chan
gePropertyValue(Object
value)
   at
ThoughtWorks.CruiseControl.Core.Tasks.DynamicValueUtility.PropertyValue.Chan
geProperty(Object
value)
   at
ThoughtWorks.CruiseControl.Core.Tasks.DirectDynamicValue.ApplyTo(Object
value, Dictionary`2 parameters, IEnumerable`1 parameterDefinitions)
   at
ThoughtWorks.CruiseControl.Core.Tasks.TaskBase.ApplyParameters(Dictionary`2
parameters, IEnumerable`1 parameterDefinitions)
   at
ThoughtWorks.CruiseControl.Core.Project.RunTasks(IIntegrationResult
result, IList tasksToRun, Dictionary`2 parameterValues)
   at ThoughtWorks.CruiseControl.Core.Project.Run(IIntegrationResult
result)
   at
ThoughtWorks.CruiseControl.Core.IntegrationRunner.Build(IIntegrationResult
result)
   at
ThoughtWorks.CruiseControl.Core.IntegrationRunner.Integrate(IntegrationReque
st
request)
--------------------

My nant task looks like this:

        <nant>
          <executable>$(tool-nant)</executable>
          <baseDirectory>$(base-dir)</baseDirectory>
          <nologo>true</nologo>
          <buildFile>Sources\Build\default.build</buildFile>
          <logger>NAnt.Core.XmlLogger</logger>
          <targetList>
            <target>$[BuildType]</target>
          </targetList>
          <buildTimeoutSeconds>1800</buildTimeoutSeconds>
        </nant>

How can I make the dynamic parameters work with ccnet 1.6?

Thanks for your help.

Reply via email to