BUG: (NAnt version 0.8.3)
In a solution task, having a configuration, where the value is not all
lowercase can cause an INTERNAL ERROR.

This occurs when the solution file has two projects in it, where one project
references another.

EXAMPLE: This fails
<target name="build">
<solution configuration="Release" solutionfile="TwoProjects.sln"/>
</target>

EXAMPLE: This works
<target name="build">
<solution configuration="release" solutionfile="TwoProjects.sln"/>
</target>

TRACE:
System.Exception: Unable to find appropriate configuration for project
reference

   at NAnt.VSNet.Tasks.Solution.Compile(String strConfiguration, ArrayList
alCSCArguments, String strLogFile, Boolean bVerbose, Boolean bShowCommands)
in C:\DotNet\nant\src\NAnt.VSNet\Solution.cs:line 242
   at NAnt.VSNet.Tasks.SolutionTask.ExecuteTask() in
C:\DotNet\nant\src\NAnt.VSNet\Tasks\SolutionTask.cs:line 112
   at NAnt.Core.Task.Execute() in C:\DotNet\nant\src\NAnt.Core\Task.cs:line
142
   at NAnt.Core.Target.Execute() in
C:\DotNet\nant\src\NAnt.Core\Target.cs:line 137
   at NAnt.Core.Target.Execute() in
C:\DotNet\nant\src\NAnt.Core\Target.cs:line 124
   at NAnt.Core.Target.Execute() in
C:\DotNet\nant\src\NAnt.Core\Target.cs:line 124
   at NAnt.Core.Project.Execute(String targetName) in
C:\DotNet\nant\src\NAnt.Core\Project.cs:line 579
   at NAnt.Core.Project.Execute() in
C:\DotNet\nant\src\NAnt.Core\Project.cs:line 562
   at NAnt.Core.Project.Run() in
C:\DotNet\nant\src\NAnt.Core\Project.cs:line 603
The problem occur

FIX:
The error occurs when the Solution.Compile method is trying to get the
referred-to Project's configuration settings
Project.GetConfigurationSettings(strConfiguration) for the named
configuration.  The configuration name used is mixed cased, but the Project
has stored the configurations with a lower case name.  The fix was to change
the Project.GetConfigurationSettings method to convert the configuration
name to lower case.  Here's the new method:

        public ConfigurationSettings GetConfigurationSettings( string
strConfiguration ) {
            return ( ConfigurationSettings )_htConfigurations[
strConfiguration.ToLower() ];
        }

OTHER SOLUTIONS:
I suggest that the hash tables be created to ignore case altogether.  This
can be done as follows:

HashTable _ht = new HashTable(CaseInsensitiveHashCodeProvider.Default,
CaseInsensitiveComparer.Default);

David



-------------------------------------------------------
This SF.net email is sponsored by: The SF.net Donation Program.
Do you like what SourceForge.net is doing for the Open
Source Community?  Make a contribution, and help us add new
features and functionality. Click here: http://sourceforge.net/donate/
_______________________________________________
nant-developers mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/nant-developers

Reply via email to