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