Browse Source

Remove NAntAddIn

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2192 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 19 years ago
parent
commit
ecba5ff63e
  1. 64
      src/AddIns/Misc/NAntAddIn/NAntAddIn.sln
  2. 20
      src/AddIns/Misc/NAntAddIn/Project/Configuration/AssemblyInfo.cs
  3. 166
      src/AddIns/Misc/NAntAddIn/Project/NAnt.addin
  4. 101
      src/AddIns/Misc/NAntAddIn/Project/NAntAddIn.csproj
  5. 5
      src/AddIns/Misc/NAntAddIn/Project/NAntAddIn.csproj.user
  6. 93
      src/AddIns/Misc/NAntAddIn/Project/Resources/NAntAddInOptionPanel.xfrm
  7. 133
      src/AddIns/Misc/NAntAddIn/Project/Src/AddInOptions.cs
  8. 316
      src/AddIns/Misc/NAntAddIn/Project/Src/Commands/AbstractRunNAntCommand.cs
  9. 37
      src/AddIns/Misc/NAntAddIn/Project/Src/Commands/GoToErrorCommand.cs
  10. 41
      src/AddIns/Misc/NAntAddIn/Project/Src/Commands/GoToTargetDefinitionCommand.cs
  11. 36
      src/AddIns/Misc/NAntAddIn/Project/Src/Commands/OpenNAntBuildFileCommand.cs
  12. 23
      src/AddIns/Misc/NAntAddIn/Project/Src/Commands/RefreshNantPadCommand.cs
  13. 39
      src/AddIns/Misc/NAntAddIn/Project/Src/Commands/RunNAntCleanTargetCommand.cs
  14. 38
      src/AddIns/Misc/NAntAddIn/Project/Src/Commands/RunNAntCommand.cs
  15. 49
      src/AddIns/Misc/NAntAddIn/Project/Src/Commands/RunSelectedNAntTargetCommand.cs
  16. 25
      src/AddIns/Misc/NAntAddIn/Project/Src/Commands/StopNAntCommand.cs
  17. 70
      src/AddIns/Misc/NAntAddIn/Project/Src/Gui/NAntAddInOptionPanel.cs
  18. 35
      src/AddIns/Misc/NAntAddIn/Project/Src/Gui/NAntBuildFileErrorTreeNode.cs
  19. 148
      src/AddIns/Misc/NAntAddIn/Project/Src/Gui/NAntBuildFileTreeNode.cs
  20. 48
      src/AddIns/Misc/NAntAddIn/Project/Src/Gui/NAntBuildTargetTreeNode.cs
  21. 270
      src/AddIns/Misc/NAntAddIn/Project/Src/Gui/NAntPadContent.cs
  22. 383
      src/AddIns/Misc/NAntAddIn/Project/Src/Gui/NAntPadTreeView.cs
  23. 64
      src/AddIns/Misc/NAntAddIn/Project/Src/Gui/NAntPadTreeViewImageList.cs
  24. 23
      src/AddIns/Misc/NAntAddIn/Project/Src/IsNAntRunningCondition.cs
  25. 37
      src/AddIns/Misc/NAntAddIn/Project/Src/NAntAddInException.cs
  26. 360
      src/AddIns/Misc/NAntAddIn/Project/Src/NAntBuildFile.cs
  27. 52
      src/AddIns/Misc/NAntAddIn/Project/Src/NAntBuildFileError.cs
  28. 84
      src/AddIns/Misc/NAntAddIn/Project/Src/NAntBuildTarget.cs
  29. 252
      src/AddIns/Misc/NAntAddIn/Project/Src/NAntBuildTargetCollection.cs
  30. 59
      src/AddIns/Misc/NAntAddIn/Project/Src/NAntExitEventArgs.cs
  31. 324
      src/AddIns/Misc/NAntAddIn/Project/Src/NAntOutputParser.cs
  32. 284
      src/AddIns/Misc/NAntAddIn/Project/Src/NAntRunner.cs
  33. 39
      src/AddIns/Misc/NAntAddIn/Project/Src/NAntRunnerSingleton.cs
  34. 253
      src/AddIns/Misc/NAntAddIn/Project/Src/TaskCollection.cs
  35. 39
      src/AddIns/Misc/NAntAddIn/Test/AssemblyInfo.cs
  36. 129
      src/AddIns/Misc/NAntAddIn/Test/CscNAntOutputTestFixture.cs
  37. 140
      src/AddIns/Misc/NAntAddIn/Test/FatalErrorNAntOutputTestFixture.cs
  38. 42
      src/AddIns/Misc/NAntAddIn/Test/InvalidNAntBuildFileTestFixture.cs
  39. 56
      src/AddIns/Misc/NAntAddIn/Test/InvalidXmlNAntOutputTestFixture.cs
  40. 76
      src/AddIns/Misc/NAntAddIn/Test/NAntAddIn.Tests.csproj
  41. 1
      src/AddIns/Misc/NAntAddIn/Test/NAntAddIn.Tests.csproj.user
  42. 71
      src/AddIns/Misc/NAntAddIn/Test/NAntErrorAndWarningOutputTestFixture.cs
  43. 57
      src/AddIns/Misc/NAntAddIn/Test/NonFatalErrorNAntOutputTestFixture.cs
  44. 113
      src/AddIns/Misc/NAntAddIn/Test/ReadNAntBuildFileTestFixture.cs
  45. 48
      src/AddIns/Misc/NAntAddIn/Test/ReadOnlyPropertyNAntOutputTestFixture.cs
  46. 51
      src/AddIns/Misc/NAntAddIn/Test/TargetDoesNotExistNAntOutputTestFixture.cs
  47. 88
      src/AddIns/Misc/NAntAddIn/Test/VBErrorNAntOutputTestFixture.cs
  48. 6
      src/SharpDevelop.Tests.sln
  49. 5
      src/SharpDevelop.sln

64
src/AddIns/Misc/NAntAddIn/NAntAddIn.sln

@ -1,64 +0,0 @@ @@ -1,64 +0,0 @@
Microsoft Visual Studio Solution File, Format Version 9.00
# SharpDevelop 2.1.0.1782
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NAntAddIn", "Project\NAntAddIn.csproj", "{1DB3CAD2-38E8-4C5E-8E1B-0E37B1A5C006}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NAntAddIn.Tests", "Test\NAntAddIn.Tests.csproj", "{13AB8351-39E5-4F9D-A59C-B30D60CF6B8C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core", "..\..\..\Main\Core\Project\ICSharpCode.Core.csproj", "{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop", "..\..\..\Main\Base\Project\ICSharpCode.SharpDevelop.csproj", "{2748AD25-9C63-4E12-877B-4DCE96FBED54}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactory", "..\..\..\Libraries\NRefactory\Project\NRefactory.csproj", "{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinFormsUI", "..\..\..\Libraries\DockPanel_Src\WinFormsUI\WinFormsUI.csproj", "{D3C782BA-178E-4235-A3BA-8C11DEBB6BEE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TextEditor", "..\..\..\Libraries\ICSharpCode.TextEditor\Project\ICSharpCode.TextEditor.csproj", "{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Sda", "..\..\..\Main\ICSharpCode.SharpDevelop.Sda\ICSharpCode.SharpDevelop.Sda.csproj", "{80318B5F-A25D-45AB-8A95-EF31D2370A4C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Dom", "..\..\..\Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj", "{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{2748AD25-9C63-4E12-877B-4DCE96FBED54}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2748AD25-9C63-4E12-877B-4DCE96FBED54}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2748AD25-9C63-4E12-877B-4DCE96FBED54}.Release|Any CPU.Build.0 = Release|Any CPU
{2748AD25-9C63-4E12-877B-4DCE96FBED54}.Release|Any CPU.ActiveCfg = Release|Any CPU
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}.Release|Any CPU.Build.0 = Release|Any CPU
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{13AB8351-39E5-4F9D-A59C-B30D60CF6B8C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{13AB8351-39E5-4F9D-A59C-B30D60CF6B8C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{13AB8351-39E5-4F9D-A59C-B30D60CF6B8C}.Release|Any CPU.Build.0 = Release|Any CPU
{13AB8351-39E5-4F9D-A59C-B30D60CF6B8C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1DB3CAD2-38E8-4C5E-8E1B-0E37B1A5C006}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1DB3CAD2-38E8-4C5E-8E1B-0E37B1A5C006}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1DB3CAD2-38E8-4C5E-8E1B-0E37B1A5C006}.Release|Any CPU.Build.0 = Release|Any CPU
{1DB3CAD2-38E8-4C5E-8E1B-0E37B1A5C006}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}.Release|Any CPU.Build.0 = Release|Any CPU
{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D3C782BA-178E-4235-A3BA-8C11DEBB6BEE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D3C782BA-178E-4235-A3BA-8C11DEBB6BEE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D3C782BA-178E-4235-A3BA-8C11DEBB6BEE}.Release|Any CPU.Build.0 = Release|Any CPU
{D3C782BA-178E-4235-A3BA-8C11DEBB6BEE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}.Release|Any CPU.Build.0 = Release|Any CPU
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}.Release|Any CPU.ActiveCfg = Release|Any CPU
{80318B5F-A25D-45AB-8A95-EF31D2370A4C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{80318B5F-A25D-45AB-8A95-EF31D2370A4C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{80318B5F-A25D-45AB-8A95-EF31D2370A4C}.Release|Any CPU.Build.0 = Release|Any CPU
{80318B5F-A25D-45AB-8A95-EF31D2370A4C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}.Release|Any CPU.Build.0 = Release|Any CPU
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}.Release|Any CPU.ActiveCfg = Release|Any CPU
EndGlobalSection
EndGlobal

20
src/AddIns/Misc/NAntAddIn/Project/Configuration/AssemblyInfo.cs

@ -1,20 +0,0 @@ @@ -1,20 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System.Reflection;
// Information about this assembly is defined by the following
// attributes.
//
// change them to the information which is associated with the assembly
// you compile.
[assembly: AssemblyTitle("NAntAddIn")]
[assembly: AssemblyDescription("NAnt-AddIn for SharpDevelop")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

166
src/AddIns/Misc/NAntAddIn/Project/NAnt.addin

@ -1,166 +0,0 @@ @@ -1,166 +0,0 @@
<AddIn name = "NAnt Add-in"
author = "Matt Ward"
copyright = "prj:///doc/copyright.txt"
description = "NAnt integration for SharpDevelop.">
<Manifest>
<Identity name = "ICSharpCode.NAntAddIn"/>
</Manifest>
<Runtime>
<Import assembly = "NAntAddIn.dll">
<ConditionEvaluator name = "IsNAntRunning" class = "ICSharpCode.NAntAddIn.IsNAntRunningCondition"/>
</Import>
</Runtime>
<!-- NAnt file filter -->
<Path name = "/SharpDevelop/Workbench/FileFilter">
<FileFilter id = "NAnt"
insertbefore="AllFiles"
name = "${res:SharpDevelop.FileFilter.NAnt} (*.build;*.include)"
extensions = "*.build;*.include"/>
</Path>
<!-- Menu options -->
<Path name = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/ProjectActions">
<MenuItem id = "NAnt"
label = "&amp;NAnt"
icon="NAntAddIn.Icons.16x16.NAntPad"
type="Menu">
<ComplexCondition action="Disable">
<And>
<Condition name="SolutionOpen"/>
<Not>
<Condition name="IsNAntRunning"/>
</Not>
</And>
<MenuItem id = "RunNAnt"
icon = "NAntAddIn.Icons.16x16.RunNAnt"
label = "${res:ICSharpCode.NAntAddIn.RunDefaultTargetMenuLabel}"
description = "Runs NAnt on the build file contained in a SharpDevelop project file."
class = "ICSharpCode.NAntAddIn.Commands.RunNAntCommand"
/>
<MenuItem id = "RunNAntCleanTarget"
icon = "NAntAddIn.Icons.16x16.RunNAntClean"
insertafter = "RunNAnt"
label = "${res:ICSharpCode.NAntAddIn.RunCleanTargetMenuLabel}"
description = "Runs the clean target on the build file."
class = "ICSharpCode.NAntAddIn.Commands.RunNAntCleanTargetCommand"
/>
</ComplexCondition>
<ComplexCondition action="Disable">
<And>
<Condition name="SolutionOpen"/>
<Condition name="IsNAntRunning"/>
</And>
<MenuItem id = "StopNAnt"
icon = "NAntAddIn.Icons.16x16.StopNAnt"
insertafter = "RunNAntCleanTarget"
label = "${res:ICSharpCode.NAntAddIn.StopNAntMenuLabel}"
description = "Stops the currently running build."
class = "ICSharpCode.NAntAddIn.Commands.StopNAntCommand"
/>
</ComplexCondition>
</MenuItem>
</Path>
<!-- Project browser icons -->
<Path name = "/Workspace/Icons">
<Icon id = "NAntBuildFileIcon"
extensions = ".build"
resource = "NAntAddIn.Icons.16x16.BuildFile" />
<Icon id = "NAntBuildIncludeFileIcon"
extensions = ".include"
resource = "NAntAddIn.Icons.16x16.BuildFile" />
</Path>
<!-- Options panel -->
<Path name = "/SharpDevelop/Dialogs/OptionsDialog/ToolsOptions">
<DialogPanel id = "NAntAddInOptionPanel"
label = "NAnt"
class = "ICSharpCode.NAntAddIn.Gui.NAntAddInOptionPanel"/>
</Path>
<!-- NAnt pad -->
<Path name = "/SharpDevelop/Workbench/Pads">
<Pad id = "NAntPad"
category = "Tools"
title = "NAnt"
icon = "NAntAddIn.Icons.16x16.NAntPad"
class = "ICSharpCode.NAntAddIn.Gui.NAntPadContent"/>
</Path>
<!-- NAnt pad toolbar -->
<Path name = "/SharpDevelop/Pads/NAntPad/Toolbar">
<ComplexCondition action="Disable">
<And>
<Condition name="SolutionOpen"/>
<Not>
<Condition name="IsNAntRunning"/>
</Not>
</And>
<ToolbarItem id = "Run"
icon = "Icons.16x16.RunProgramIcon"
tooltip = "${res:ICSharpCode.NAntAddIn.NAntPadContent.RunCommandBarButtonText}"
class = "ICSharpCode.NAntAddIn.Commands.RunSelectedNAntTargetCommand"/>
</ComplexCondition>
<Condition name = "SolutionOpen" action="Disable">
<ToolbarItem id = "Refresh"
icon = "Icons.16x16.BrowserRefresh"
tooltip = "${res:ICSharpCode.NAntAddIn.NAntPadContent.RefreshCommandBarButtonText}"
class = "ICSharpCode.NAntAddIn.Commands.RefreshNAntPadCommand"/>
</Condition>
<ComplexCondition action="Disable">
<And>
<Condition name="SolutionOpen"/>
<Condition name="IsNAntRunning"/>
</And>
<ToolbarItem id = "Stop"
icon = "Icons.16x16.Debug.StopProcess"
tooltip = "${res:ICSharpCode.NAntAddIn.NAntPadContent.StopCommandBarButtonText}"
class = "ICSharpCode.NAntAddIn.Commands.StopNAntCommand"/>
</ComplexCondition>
</Path>
<!-- NAnt pad tree view context menu -->
<Path name = "/SharpDevelop/Pads/NAntPad/ContextMenu">
<Condition name="Ownerstate" ownerstate="BuildFileSelected">
<MenuItem id = "RunDefaultTarget"
icon = "NAntAddIn.Icons.16x16.RunNAnt"
label = "${res:ICSharpCode.NAntAddIn.RunDefaultTargetMenuLabel}"
class = "ICSharpCode.NAntAddIn.Commands.RunSelectedNAntTargetCommand"/>
<MenuItem id = "RunNAntCleanTarget"
icon = "NAntAddIn.Icons.16x16.RunNAntClean"
label = "${res:ICSharpCode.NAntAddIn.RunCleanTargetMenuLabel}"
description = "Runs the clean target on the build file."
class = "ICSharpCode.NAntAddIn.Commands.RunNAntCleanTargetCommand"/>
</Condition>
<Condition name="Ownerstate" ownerstate="BuildFileSelected">
<MenuItem id = "StopNAnt"
icon = "NAntAddIn.Icons.16x16.StopNAnt"
label = "${res:ICSharpCode.NAntAddIn.StopNAntMenuLabel}"
description = "Stops the currently running build."
class = "ICSharpCode.NAntAddIn.Commands.StopNAntCommand"/>
</Condition>
<Condition name="Ownerstate" ownerstate="TargetSelected">
<MenuItem id = "RunTarget"
icon = "Icons.16x16.RunProgramIcon"
label = "${res:ICSharpCode.NAntAddIn.RunTargetMenuLabel}"
class = "ICSharpCode.NAntAddIn.Commands.RunSelectedNAntTargetCommand"/>
</Condition>
<MenuItem id = "OpenBuildFile"
icon = "Icons.16x16.OpenFileIcon"
label = "${res:ProjectComponent.ContextMenu.Open}"
class = "ICSharpCode.NAntAddIn.Commands.OpenNAntBuildFileCommand"/>
<Condition name="Ownerstate" ownerstate="TargetSelected">
<MenuItem id = "GoToTargetDefinition"
label = "${res:ICSharpCode.NAntAddIn.GotoDefinitionMenuLabel}"
class = "ICSharpCode.NAntAddIn.Commands.GoToTargetDefinitionCommand"/>
</Condition>
<Condition name="Ownerstate" ownerstate="ErrorSelected">
<MenuItem id = "GoToError"
label = "${res:ICSharpCode.NAntAddIn.GotoErrorMenuLabel}"
class = "ICSharpCode.NAntAddIn.Commands.GoToErrorCommand"/>
</Condition>
</Path>
</AddIn>

101
src/AddIns/Misc/NAntAddIn/Project/NAntAddIn.csproj

@ -1,101 +0,0 @@ @@ -1,101 +0,0 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{1DB3CAD2-38E8-4C5E-8E1B-0E37B1A5C006}</ProjectGuid>
<RootNamespace>NAntAddIn</RootNamespace>
<AssemblyName>NAntAddIn</AssemblyName>
<OutputType>Library</OutputType>
<WarningLevel>4</WarningLevel>
<NoStdLib>False</NoStdLib>
<NoConfig>False</NoConfig>
<DebugType>Full</DebugType>
<RegisterForComInterop>False</RegisterForComInterop>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<BaseAddress>121634816</BaseAddress>
<PlatformTarget>AnyCPU</PlatformTarget>
<FileAlignment>4096</FileAlignment>
<DebugSymbols>true</DebugSymbols>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<Optimize>False</Optimize>
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
<CheckForOverflowUnderflow>True</CheckForOverflowUnderflow>
<OutputPath>..\..\..\..\..\AddIns\AddIns\Misc\NAntAddIn\</OutputPath>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<Optimize>True</Optimize>
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
<OutputPath>..\..\..\..\..\AddIns\AddIns\Misc\NAntAddIn\</OutputPath>
<TreatWarningsAsErrors>False</TreatWarningsAsErrors>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Src\AddInOptions.cs" />
<Compile Include="Src\Gui\NAntAddInOptionPanel.cs" />
<Compile Include="Src\Commands\RunNAntCommand.cs" />
<Compile Include="Src\NAntAddInException.cs" />
<Compile Include="Src\NAntRunner.cs" />
<Compile Include="Src\NAntExitEventArgs.cs" />
<Compile Include="Src\Commands\RunNAntCleanTargetCommand.cs" />
<Compile Include="Src\Gui\NAntPadContent.cs" />
<Compile Include="Src\Gui\NAntPadTreeViewImageList.cs" />
<Compile Include="Src\Gui\NAntBuildFileTreeNode.cs" />
<Compile Include="Src\Gui\NAntBuildTargetTreeNode.cs" />
<Compile Include="Src\Gui\NAntPadTreeView.cs" />
<Compile Include="Src\Commands\RunSelectedNAntTargetCommand.cs" />
<Compile Include="Src\Commands\GoToTargetDefinitionCommand.cs" />
<Compile Include="Src\Commands\OpenNAntBuildFileCommand.cs" />
<Compile Include="Src\NAntBuildTargetCollection.cs" />
<Compile Include="Src\NAntBuildFile.cs" />
<Compile Include="Src\NAntBuildTarget.cs" />
<Compile Include="Src\NAntBuildFileError.cs" />
<Compile Include="Src\Gui\NAntBuildFileErrorTreeNode.cs" />
<Compile Include="Src\Commands\GoToErrorCommand.cs" />
<Compile Include="Src\Commands\AbstractRunNAntCommand.cs" />
<Compile Include="Src\NAntOutputParser.cs" />
<Compile Include="Src\TaskCollection.cs" />
<Compile Include="Src\NAntRunnerSingleton.cs" />
<Compile Include="Src\Commands\StopNAntCommand.cs" />
<EmbeddedResource Include="Resources\NAntAddInOptionPanel.xfrm" />
<Compile Include="Configuration\AssemblyInfo.cs" />
<None Include="NAnt.addin">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<Compile Include="Src\Commands\RefreshNantPadCommand.cs" />
<Compile Include="Src\IsNAntRunningCondition.cs" />
<Compile Include="..\..\..\..\Main\GlobalAssemblyInfo.cs">
<Link>Configuration\GlobalAssemblyInfo.cs</Link>
</Compile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\..\Main\Base\Project\ICSharpCode.SharpDevelop.csproj">
<Project>{2748AD25-9C63-4E12-877B-4DCE96FBED54}</Project>
<Name>ICSharpCode.SharpDevelop</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Main\Core\Project\ICSharpCode.Core.csproj">
<Project>{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}</Project>
<Name>ICSharpCode.Core</Name>
<Private>False</Private>
</ProjectReference>
<Folder Include="Src\Gui\" />
<Folder Include="Src\Commands\" />
<Folder Include="Resources" />
<ProjectReference Include="..\..\..\..\Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj">
<Project>{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}</Project>
<Name>ICSharpCode.SharpDevelop.Dom</Name>
<Private>False</Private>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" />
</Project>

5
src/AddIns/Misc/NAntAddIn/Project/NAntAddIn.csproj.user

@ -1,5 +0,0 @@ @@ -1,5 +0,0 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<StartProgram>..\..\..\..\..\bin\SharpDevelop.exe</StartProgram>
</PropertyGroup>
</Project>

93
src/AddIns/Misc/NAntAddIn/Project/Resources/NAntAddInOptionPanel.xfrm

@ -1,93 +0,0 @@ @@ -1,93 +0,0 @@
<Components version="1.0">
<System.Windows.Forms.UserControl>
<Name value="NAntAddInOptionPanel" />
<ClientSize value="{Width=464, Height=344}" />
<Controls>
<System.Windows.Forms.GroupBox>
<Name value="nantConfigurationGroupBox" />
<Location value="{X=3,Y=3}" />
<Text value="${res:ICSharpCode.NAntAddIn.NAntAddInOptionPanel.NAntConfigGroupBoxName}" />
<Size value="{Width=448, Height=192}" />
<TabIndex value="2" />
<Anchor value="Top, Left, Right" />
<Controls>
<System.Windows.Forms.CheckBox>
<Name value="debugModeCheckBox" />
<CheckAlign value="MiddleRight" />
<Location value="{X=8,Y=160}" />
<FlatAppearance value="System.Windows.Forms.FlatButtonAppearance" />
<Text value="${res:ICSharpCode.NAntAddIn.NAntAddInOptionPanel.DebugLabel}" />
<TabIndex value="9" />
<Size value="{Width=120, Height=24}" />
</System.Windows.Forms.CheckBox>
<System.Windows.Forms.CheckBox>
<Name value="quietCheckBox" />
<CheckAlign value="MiddleRight" />
<Location value="{X=8,Y=88}" />
<FlatAppearance value="System.Windows.Forms.FlatButtonAppearance" />
<Text value="${res:ICSharpCode.NAntAddIn.NAntAddInOptionPanel.QuietLabel}" />
<TabIndex value="6" />
<Size value="{Width=120, Height=24}" />
</System.Windows.Forms.CheckBox>
<System.Windows.Forms.CheckBox>
<Name value="verboseCheckBox" />
<CheckAlign value="MiddleRight" />
<Location value="{X=8,Y=136}" />
<FlatAppearance value="System.Windows.Forms.FlatButtonAppearance" />
<Text value="${res:ICSharpCode.NAntAddIn.NAntAddInOptionPanel.VerboseLabel}" />
<TabIndex value="8" />
<Size value="{Width=120, Height=24}" />
</System.Windows.Forms.CheckBox>
<System.Windows.Forms.CheckBox>
<Name value="showLogoCheckBox" />
<CheckAlign value="MiddleRight" />
<Location value="{X=8,Y=112}" />
<FlatAppearance value="System.Windows.Forms.FlatButtonAppearance" />
<Text value="${res:ICSharpCode.NAntAddIn.NAntAddInOptionPanel.ShowLogoLabel}" />
<TabIndex value="7" />
<Size value="{Width=120, Height=24}" />
</System.Windows.Forms.CheckBox>
<System.Windows.Forms.Button>
<Name value="browseButton" />
<Location value="{X=408,Y=36}" />
<Text value="..." />
<Size value="{Width=32, Height=23}" />
<Anchor value="Top, Right" />
<FlatAppearance value="System.Windows.Forms.FlatButtonAppearance" />
<TabIndex value="3" />
</System.Windows.Forms.Button>
<System.Windows.Forms.TextBox>
<Name value="argumentsTextBox" />
<TabIndex value="5" />
<Anchor value="Top, Left, Right" />
<Size value="{Width=328, Height=21}" />
<Location value="{X=112,Y=64}" />
</System.Windows.Forms.TextBox>
<System.Windows.Forms.Label>
<Name value="nantArgumentsLabel" />
<Location value="{X=8,Y=64}" />
<Text value="${res:ICSharpCode.NAntAddIn.NAntAddInOptionPanel.ArgumentsLabel}" />
<TextAlign value="MiddleLeft" />
<Size value="{Width=64, Height=16}" />
<TabIndex value="4" />
</System.Windows.Forms.Label>
<System.Windows.Forms.TextBox>
<Name value="nantCommandTextBox" />
<TabIndex value="2" />
<Anchor value="Top, Left, Right" />
<Size value="{Width=288, Height=21}" />
<Location value="{X=112,Y=36}" />
</System.Windows.Forms.TextBox>
<System.Windows.Forms.Label>
<Name value="nantCommandLabel" />
<Location value="{X=8,Y=34}" />
<Text value="${res:ICSharpCode.NAntAddIn.NAntAddInOptionPanel.CommandLabel}" />
<TextAlign value="MiddleLeft" />
<Size value="{Width=56, Height=16}" />
<TabIndex value="1" />
</System.Windows.Forms.Label>
</Controls>
</System.Windows.Forms.GroupBox>
</Controls>
</System.Windows.Forms.UserControl>
</Components>

133
src/AddIns/Misc/NAntAddIn/Project/Src/AddInOptions.cs

@ -1,133 +0,0 @@ @@ -1,133 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using System.Diagnostics;
using ICSharpCode.Core;
namespace ICSharpCode.NAntAddIn
{
/// <summary>
/// The NAnt add-in options.
/// </summary>
public class AddInOptions
{
public static readonly string OptionsProperty = "NAntAddIn.Options";
#region Property names
public static readonly string NAntFileNameProperty = "NAntFileName";
public static readonly string NAntArgumentsProperty = "NAntArguments";
public static readonly string VerboseProperty = "Verbose";
public static readonly string ShowLogoProperty = "ShowLogo";
public static readonly string QuietProperty = "Quiet";
public static readonly string DebugModeProperty = "DebugMode";
#endregion
#region Property defaults
public static readonly string DefaultNAntFileName = "nant.exe";
#endregion
static Properties properties;
static AddInOptions()
{
properties = PropertyService.Get(OptionsProperty, new Properties());
}
static Properties Properties {
get {
Debug.Assert(properties != null);
return properties;
}
}
#region Properties
/// <summary>
/// Gets the NAnt executable filename.
/// </summary>
/// <remarks>
/// This is either the full filename including path
/// or just the name of the executable (nant.exe) in which
/// case it is assumed that NAnt is on the path.
/// </remarks>
public static string NAntFileName {
get {
return (string)Properties.Get(NAntFileNameProperty, DefaultNAntFileName);
}
set {
if (String.IsNullOrEmpty(value)) {
Properties.Set(NAntFileNameProperty, DefaultNAntFileName);
} else {
Properties.Set(NAntFileNameProperty, value);
}
}
}
/// <summary>
/// Gets the NAnt command line arguments.
/// </summary>
public static string NAntArguments {
get {
return (string)Properties.Get(NAntArgumentsProperty, String.Empty);
}
set {
Properties.Set(NAntArgumentsProperty, value);
}
}
/// <summary>
/// Gets the NAnt -verbose setting.
/// </summary>
public static bool Verbose {
get {
return (bool)Properties.Get(VerboseProperty, false);
}
set {
Properties.Set(VerboseProperty, value);
}
}
/// <summary>
/// Gets the NAnt show logo setting.
/// </summary>
public static bool ShowLogo {
get {
return (bool)Properties.Get(ShowLogoProperty, false);
}
set {
Properties.Set(ShowLogoProperty, value);
}
}
/// <summary>
/// Gets the NAnt -quiet setting.
/// </summary>
public static bool Quiet {
get {
return (bool)Properties.Get(QuietProperty, false);
}
set {
Properties.Set(QuietProperty, value);
}
}
/// <summary>
/// Gets the NAnt -debug setting.
/// </summary>
public static bool DebugMode {
get {
return (bool)Properties.Get(DebugModeProperty, false);
}
set {
Properties.Set(DebugModeProperty, value);
}
}
#endregion
}
}

316
src/AddIns/Misc/NAntAddIn/Project/Src/Commands/AbstractRunNAntCommand.cs

@ -1,316 +0,0 @@ @@ -1,316 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using System.ComponentModel;
using System.IO;
using ICSharpCode.Core;
using ICSharpCode.NAntAddIn.Gui;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Util;
namespace ICSharpCode.NAntAddIn.Commands
{
/// <summary>
/// The base class for all commands that run NAnt.
/// </summary>
public abstract class AbstractRunNAntCommand : AbstractMenuCommand
{
/// <summary>
/// The default NAnt build filename.
/// </summary>
public static readonly string DefaultBuildFileName = "default.build";
/// <summary>
/// The default NAnt build file extension.
/// </summary>
public static readonly string NAntBuildFileExtension = ".build";
const int Win32FileNotFoundErrorCode = 2;
const int Win32PathNotFoundErrorCode = 3;
static MessageViewCategory category;
static NAntRunner runner;
public AbstractRunNAntCommand()
{
if (runner == null) {
runner = NAntRunnerSingleton.Runner;
runner.NAntExited += new NAntExitEventHandler(NAntExited);
runner.OutputLineReceived += new LineReceivedEventHandler(OutputLineReceived);
}
}
public override void Run()
{
}
public static bool IsActiveConfigurationDebug {
get {
bool isDebug = false;
IProject project = ProjectService.CurrentProject;
if (project != null) {
if (String.Compare(project.ActiveConfiguration, "debug", true) == 0) {
isDebug = true;
}
}
return isDebug;
}
}
/// <summary>
/// Gets the NAnt build filename from the selected project.
/// </summary>
/// <remarks>
/// <para>The basic logic is:</para>
/// <para>Look for a file called "default.build".</para>
/// <para>Look for a file named after the project
/// "<projectName>.build".</para>
/// <para>Look for the first ".build" file in the project.</para>
/// <para>If multiple ".build" files exist then, like NAnt,
/// this is an error, but currently we ignore this.</para>
/// <para>Note that this does not look in the project folder
/// for a .build file that is not added to the project.
/// </para>
/// </remarks>
/// <returns>The build filename for the project.</returns>
protected string GetProjectBuildFileName()
{
string fileName = String.Empty;
IProject project = ProjectService.CurrentProject;
// Look for "default.build".
string projectFileName = project.FileName;
string buildFileName = Path.Combine(Path.GetDirectoryName(projectFileName), DefaultBuildFileName);
if (project.IsFileInProject(buildFileName)) {
fileName = buildFileName;
} else {
// Look for <projectname>.build
buildFileName = Path.ChangeExtension(projectFileName, NAntBuildFileExtension);
if (project.IsFileInProject(buildFileName)) {
fileName = buildFileName;
} else {
// Look for the first matching .build file.
ProjectItem projectItem = GetFirstMatchingFile(project, NAntBuildFileExtension);
if (projectItem != null) {
fileName = projectItem.FileName;
} else {
throw new NAntAddInException(StringParser.Parse("${res:ICSharpCode.NAntAddIn.AbstractRunNAntCommand.NoBuildFileErrorText}"));
}
}
}
return fileName;
}
/// <summary>
/// Runs any pre-build steps such as saving changed files.
/// </summary>
protected void RunPreBuildSteps()
{
//ProjectService.DoBeforeCompileAction();
TaskService.ClearExceptCommentTasks();
}
/// <summary>
/// Runs the default target in the NAnt build.
/// </summary>
/// <param name="buildFileName">The build file to run.</param>
/// <param name="workingDirectory">The working folder for NAnt.</param>
/// <param name="debug">Flag indicating whether to set the NAnt debug property.</param>
protected void RunBuild(string buildFileName, string workingDirectory, bool debug)
{
RunBuild(buildFileName, workingDirectory, debug, String.Empty, String.Empty);
}
protected void RunBuild(string buildFileName, string workingDirectory, bool debug, string target)
{
RunBuild(buildFileName, workingDirectory, debug, target, String.Empty);
}
/// <summary>
/// Runs the specified target in the NAnt build.
/// </summary>
/// <param name="buildFileName">The build file to run.</param>
/// <param name="workingDirectory">The working folder for NAnt.</param>
/// <param name="debug">Flag indicating whether to set the NAnt debug property.</param>
/// <param name="target">The NAnt target to run.</param>
/// <param name="args">Command line arguments to pass to NAnt.</param>
protected void RunBuild(string buildFileName, string workingDirectory, bool debug, string target, string args)
{
if (IsBuildRunning) {
throw new NAntAddInException(StringParser.Parse("${res:ICSharpCode.NAntAddIn.AbstractRunNAntCommand.BuildRunningErrorText}"));
}
Category.ClearText();
ShowOutputPad();
runner.BuildFileName = buildFileName;
runner.NAntFileName = AddInOptions.NAntFileName;
runner.Verbose = AddInOptions.Verbose;
runner.WorkingDirectory = workingDirectory;
runner.Quiet = AddInOptions.Quiet;
runner.ShowLogo = AddInOptions.ShowLogo;
runner.DebugMode = AddInOptions.DebugMode;
if (debug) {
runner.Arguments = String.Concat("-D:debug=true ", AddInOptions.NAntArguments, " ", args, " ", target);
} else {
runner.Arguments = String.Concat(AddInOptions.NAntArguments, " ", args, " ", target);
}
CategoryWriteLine(StringParser.Parse("${res:ICSharpCode.NAntAddIn.AbstractRunNAntCommand.RunningNAntMessage}"));
CategoryWriteLine(runner.CommandLine);
try {
runner.Start();
} catch (Win32Exception ex) {
if (ex.NativeErrorCode == Win32FileNotFoundErrorCode || ex.NativeErrorCode == Win32PathNotFoundErrorCode) {
throw new NAntAddInException(GetNAntNotFoundErrorMessage(AddInOptions.NAntFileName), ex);
} else {
throw;
}
}
}
/// <summary>
/// Gets any extra arguments from the NAnt pad's text box.
/// </summary>
protected string GetPadTextBoxArguments()
{
string arguments = String.Empty;
IWorkbench Workbench = ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.Workbench;
PadDescriptor padDescriptor = Workbench.GetPad(typeof(NAntPadContent));
if (padDescriptor != null && padDescriptor.PadContent != null) {
arguments = ((NAntPadContent)padDescriptor.PadContent).Arguments;
}
return arguments;
}
/// <summary>
/// Stops the currently running build.
/// </summary>
protected void StopBuild()
{
if (IsBuildRunning) {
if (MessageService.AskQuestion(StringParser.Parse("${res:ICSharpCode.NAntAddIn.AbstractRunNAntCommand.TerminateNAntQuestion}"))) {
runner.Stop();
CategoryWriteLine(StringParser.Parse("${res:ICSharpCode.NAntAddIn.AbstractRunNAntCommand.NAntStoppedMessage}"));
}
}
}
protected bool IsBuildRunning {
get {
return runner.IsRunning;
}
}
/// <summary>
/// Gets the NAnt message view output window.
/// </summary>
MessageViewCategory Category {
get {
if (category == null) {
category = new MessageViewCategory("NAnt");
CompilerMessageView cmv = (CompilerMessageView)WorkbenchSingleton.Workbench.GetPad(typeof(CompilerMessageView)).PadContent;
cmv.AddCategory(category);
}
return category;
}
}
/// <summary>
/// Writes a line of text to the output window.
/// </summary>
void CategoryWriteLine(string message)
{
Category.AppendText(String.Concat(message, Environment.NewLine));
}
/// <summary>
/// Brings output pad to the front.
/// </summary>
void ShowOutputPad()
{
WorkbenchSingleton.Workbench.GetPad(typeof(CompilerMessageView)).BringPadToFront();
}
/// <summary>
/// Looks for the first file that matches the specified
/// file extension.
/// </summary>
/// <param name="extension">A filename extension.</param>
/// <returns>A ProjectItem that has the specified extension,
/// or null.</returns>
ProjectItem GetFirstMatchingFile(IProject project, string extension)
{
foreach (ProjectItem projectItem in project.Items) {
string projectFileNameExtension = Path.GetExtension(projectItem.FileName);
if (String.Compare(projectFileNameExtension, extension, true) == 0) {
return projectItem;
}
}
return null;
}
/// <summary>
/// Displays the output from NAnt after it has exited.
/// </summary>
/// <param name="sender">The event source.</param>
/// <param name="e">The NAnt exit event arguments.</param>
void NAntExited(object sender, NAntExitEventArgs e)
{
// Update output window.
string outputText = String.Empty;
System.Diagnostics.Debug.Assert(e.Error.Length == 0);
outputText = String.Concat(outputText, e.Output);
// Update task list.
TaskCollection tasks = NAntOutputParser.Parse(outputText);
foreach (Task task in tasks) {
WorkbenchSingleton.SafeThreadAsyncCall(TaskService.Add, task);
}
// Bring task list to front.
if (tasks.Count > 0 && ErrorListPad.ShowAfterBuild) {
IWorkbench workbench = ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.Workbench;
PadDescriptor padDescriptor = workbench.GetPad(typeof(ErrorListPad));
if (padDescriptor != null) {
WorkbenchSingleton.SafeThreadAsyncCall(padDescriptor.BringPadToFront);
}
}
}
void OutputLineReceived(object sender, LineReceivedEventArgs e)
{
CategoryWriteLine(e.Line);
}
string GetNAntNotFoundErrorMessage(string fileName)
{
string formatString = StringParser.Parse("${res:ICSharpCode.NAntAddIn.AbstractRunNAntCommand.NAntExeNotFoundMessage}");
return String.Format(formatString, fileName);
}
}
}

37
src/AddIns/Misc/NAntAddIn/Project/Src/Commands/GoToErrorCommand.cs

@ -1,37 +0,0 @@ @@ -1,37 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using System.IO;
using ICSharpCode.Core;
using ICSharpCode.NAntAddIn.Gui;
using ICSharpCode.SharpDevelop;
namespace ICSharpCode.NAntAddIn.Commands
{
/// <summary>
/// Opens up a NAnt build file and goes to the line of the
/// error.
/// </summary>
public class GoToErrorCommand : AbstractMenuCommand
{
/// <summary>
/// Runs the <see cref="GoToErrorCommand"/>.
/// </summary>
public override void Run()
{
NAntPadTreeView padTreeView = (NAntPadTreeView)Owner;
NAntBuildFile buildFile = padTreeView.SelectedBuildFile;
if (buildFile != null) {
string fileName = Path.Combine(buildFile.Directory, buildFile.FileName);
FileService.JumpToFilePosition(fileName, buildFile.Error.Line, buildFile.Error.Column);
}
}
}
}

41
src/AddIns/Misc/NAntAddIn/Project/Src/Commands/GoToTargetDefinitionCommand.cs

@ -1,41 +0,0 @@ @@ -1,41 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using System.IO;
using ICSharpCode.Core;
using ICSharpCode.NAntAddIn.Gui;
using ICSharpCode.SharpDevelop;
namespace ICSharpCode.NAntAddIn.Commands
{
/// <summary>
/// Opens up a NAnt build file and goes to the line of the
/// target selected.
/// </summary>
public class GoToTargetDefinitionCommand : AbstractMenuCommand
{
/// <summary>
/// Runs the <see cref="GoToDefinitionCommand"/>.
/// </summary>
public override void Run()
{
NAntPadTreeView padTreeView = (NAntPadTreeView)Owner;
NAntBuildFile buildFile = padTreeView.SelectedBuildFile;
if (buildFile != null) {
NAntBuildTarget target = padTreeView.SelectedTarget;
if (target != null) {
string fileName = Path.Combine(buildFile.Directory, buildFile.FileName);
FileService.JumpToFilePosition(fileName, target.Line, target.Column);
}
}
}
}
}

36
src/AddIns/Misc/NAntAddIn/Project/Src/Commands/OpenNAntBuildFileCommand.cs

@ -1,36 +0,0 @@ @@ -1,36 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using System.IO;
using ICSharpCode.Core;
using ICSharpCode.NAntAddIn.Gui;
using ICSharpCode.SharpDevelop;
namespace ICSharpCode.NAntAddIn.Commands
{
/// <summary>
/// Opens the build file selected in the NAnt pad view.
/// </summary>
public class OpenNAntBuildFileCommand : AbstractMenuCommand
{
/// <summary>
/// Runs the <see cref="OpenNAntBuildFile"/>.
/// </summary>
public override void Run()
{
NAntPadTreeView padTreeView = (NAntPadTreeView)Owner;
NAntBuildFile buildFile = padTreeView.SelectedBuildFile;
if (buildFile != null) {
string fileName = Path.Combine(buildFile.Directory, buildFile.FileName);
FileService.OpenFile(fileName);
}
}
}
}

23
src/AddIns/Misc/NAntAddIn/Project/Src/Commands/RefreshNantPadCommand.cs

@ -1,23 +0,0 @@ @@ -1,23 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using ICSharpCode.NAntAddIn.Gui;
namespace ICSharpCode.NAntAddIn.Commands
{
/// <summary>
/// Refreshes the NAnt pad.
/// </summary>
public class RefreshNAntPadCommand : AbstractRunNAntCommand
{
public override void Run()
{
NAntPadContent.Instance.Refresh();
}
}
}

39
src/AddIns/Misc/NAntAddIn/Project/Src/Commands/RunNAntCleanTargetCommand.cs

@ -1,39 +0,0 @@ @@ -1,39 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using System.IO;
using ICSharpCode.Core;
namespace ICSharpCode.NAntAddIn.Commands
{
/// <summary>
/// Runs the NAnt "clean" target on the project's build file.
/// </summary>
public class RunNAntCleanTargetCommand : AbstractRunNAntCommand
{
/// <summary>
/// Runs the <see cref="RunNAntCleanTargetCommand"/>.
/// </summary>
public override void Run()
{
try {
string buildFileName = GetProjectBuildFileName();
RunPreBuildSteps();
RunBuild(Path.GetFileName(buildFileName),
Path.GetDirectoryName(buildFileName),
IsActiveConfigurationDebug,
"clean");
} catch (NAntAddInException ex) {
MessageService.ShowMessage(ex.Message);
}
}
}
}

38
src/AddIns/Misc/NAntAddIn/Project/Src/Commands/RunNAntCommand.cs

@ -1,38 +0,0 @@ @@ -1,38 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using System.IO;
using ICSharpCode.Core;
namespace ICSharpCode.NAntAddIn.Commands
{
/// <summary>
/// Represents the command that runs NAnt on the project's build file.
/// </summary>
public class RunNAntCommand : AbstractRunNAntCommand
{
/// <summary>
/// Runs the <see cref="RunNAntCommand"/>.
/// </summary>
public override void Run()
{
try {
string buildFileName = GetProjectBuildFileName();
RunPreBuildSteps();
RunBuild(Path.GetFileName(buildFileName),
Path.GetDirectoryName(buildFileName),
IsActiveConfigurationDebug);
} catch (NAntAddInException ex) {
MessageService.ShowMessage(ex.Message);
}
}
}
}

49
src/AddIns/Misc/NAntAddIn/Project/Src/Commands/RunSelectedNAntTargetCommand.cs

@ -1,49 +0,0 @@ @@ -1,49 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using ICSharpCode.Core;
using ICSharpCode.NAntAddIn.Gui;
namespace ICSharpCode.NAntAddIn.Commands
{
/// <summary>
/// Runs the NAnt target selected in the NAnt Pad view.
/// </summary>
public class RunSelectedNAntTargetCommand : AbstractRunNAntCommand
{
/// <summary>
/// Runs the <see cref="RunSelectedNAntTargetCommand"/>.
/// </summary>
public override void Run()
{
try {
NAntBuildFile buildFile = NAntPadContent.Instance.SelectedBuildFile;
if (buildFile != null) {
NAntBuildTarget target = NAntPadContent.Instance.SelectedTarget;
string targetName = String.Empty;
if (target != null) {
targetName = target.Name;
}
RunPreBuildSteps();
RunBuild(buildFile.FileName,
buildFile.Directory,
IsActiveConfigurationDebug,
targetName,
GetPadTextBoxArguments());
}
} catch (Exception ex) {
MessageService.ShowMessage(ex.Message);
}
}
}
}

25
src/AddIns/Misc/NAntAddIn/Project/Src/Commands/StopNAntCommand.cs

@ -1,25 +0,0 @@ @@ -1,25 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
namespace ICSharpCode.NAntAddIn.Commands
{
/// <summary>
/// Represents the command that stops the currently running NAnt process.
/// </summary>
public class StopNAntCommand : AbstractRunNAntCommand
{
/// <summary>
/// Runs the <see cref="StopNAntCommand"/>.
/// </summary>
public override void Run()
{
StopBuild();
}
}
}

70
src/AddIns/Misc/NAntAddIn/Project/Src/Gui/NAntAddInOptionPanel.cs

@ -1,70 +0,0 @@ @@ -1,70 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using System.Windows.Forms;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Gui;
namespace ICSharpCode.NAntAddIn.Gui
{
/// <summary>
/// Options panel for the NAnt add-in.
/// </summary>
public class NAntAddInOptionPanel : AbstractOptionPanel
{
static readonly string commandTextBoxName = "nantCommandTextBox";
static readonly string argumentsTextBoxName = "argumentsTextBox";
static readonly string verboseCheckBoxName = "verboseCheckBox";
static readonly string browseButtonName = "browseButton";
static readonly string showLogoCheckBoxName = "showLogoCheckBox";
static readonly string quietCheckBoxName = "quietCheckBox";
static readonly string debugModeCheckBoxName = "debugModeCheckBox";
public override void LoadPanelContents()
{
SetupFromXmlStream(this.GetType().Assembly.GetManifestResourceStream("NAntAddIn.Resources.NAntAddInOptionPanel.xfrm"));
ControlDictionary[commandTextBoxName].Text = AddInOptions.NAntFileName;
ControlDictionary[argumentsTextBoxName].Text = AddInOptions.NAntArguments;
((CheckBox)ControlDictionary[verboseCheckBoxName]).Checked = AddInOptions.Verbose;
((CheckBox)ControlDictionary[showLogoCheckBoxName]).Checked = AddInOptions.ShowLogo;
((CheckBox)ControlDictionary[quietCheckBoxName]).Checked = AddInOptions.Quiet;
((CheckBox)ControlDictionary[debugModeCheckBoxName]).Checked = AddInOptions.DebugMode;
ControlDictionary[browseButtonName].Click += new EventHandler(OnBrowse);
}
public override bool StorePanelContents()
{
AddInOptions.NAntFileName = ControlDictionary[commandTextBoxName].Text;
AddInOptions.NAntArguments = ControlDictionary[argumentsTextBoxName].Text;
AddInOptions.Verbose = ((CheckBox)ControlDictionary[verboseCheckBoxName]).Checked;
AddInOptions.ShowLogo = ((CheckBox)ControlDictionary[showLogoCheckBoxName]).Checked;
AddInOptions.Quiet = ((CheckBox)ControlDictionary[quietCheckBoxName]).Checked;
AddInOptions.DebugMode = ((CheckBox)ControlDictionary[debugModeCheckBoxName]).Checked;
return true;
}
/// <summary>
/// Allows the user to browse for the NAnt executable.
/// </summary>
void OnBrowse(object sender, EventArgs e)
{
using (OpenFileDialog openFileDialog = new OpenFileDialog()) {
openFileDialog.CheckFileExists = true;
openFileDialog.Filter = StringParser.Parse("${res:SharpDevelop.FileFilter.ExecutableFiles}|*.exe|${res:SharpDevelop.FileFilter.AllFiles}|*.*");
if (openFileDialog.ShowDialog() == DialogResult.OK) {
ControlDictionary[commandTextBoxName].Text = openFileDialog.FileName;
}
}
}
}
}

35
src/AddIns/Misc/NAntAddIn/Project/Src/Gui/NAntBuildFileErrorTreeNode.cs

@ -1,35 +0,0 @@ @@ -1,35 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using System.Windows.Forms;
namespace ICSharpCode.NAntAddIn.Gui
{
/// <summary>
/// Represents a <see cref="NAntBuildFile"/> error in the
/// <see cref="NAntPadTreeView"/>.
/// </summary>
public class NAntBuildFileErrorTreeNode : TreeNode
{
NAntBuildFileError buildFileError;
public NAntBuildFileErrorTreeNode(NAntBuildFileError error)
{
this.Text = error.Message;
this.ImageIndex = NAntPadTreeViewImageList.TargetErrorImage;
this.SelectedImageIndex = NAntPadTreeViewImageList.TargetErrorImage;
this.buildFileError = error;
}
public NAntBuildFileError Error {
get {
return buildFileError;
}
}
}
}

148
src/AddIns/Misc/NAntAddIn/Project/Src/Gui/NAntBuildFileTreeNode.cs

@ -1,148 +0,0 @@ @@ -1,148 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using System.IO;
using System.Text;
using System.Windows.Forms;
namespace ICSharpCode.NAntAddIn.Gui
{
/// <summary>
/// Represents a NAnt build file in the <see cref="NAntPadTreeView"/>.
/// </summary>
public class NAntBuildFileTreeNode : TreeNode
{
NAntBuildFile buildFile;
string projectName = String.Empty;
/// <summary>
/// Creates a new instance of the <see cref="NAntBuildFileTreeNode"/>
/// class.
/// </summary>
/// <param name="buildFile">The <see cref="NAntBuildFile"/>
/// associated with this tree node.</param>
public NAntBuildFileTreeNode(string projectName, NAntBuildFile buildFile)
{
this.projectName = projectName;
this.buildFile = buildFile;
UpdateNode();
}
/// <summary>
/// Gets the <see cref="NAntBuildFile"/> associated with
/// this node.
/// </summary>
public NAntBuildFile BuildFile {
get {
return buildFile;
}
set {
SetBuildFile(value);
}
}
/// <summary>
/// Gets or sets the build file's filename.
/// </summary>
/// <remarks>
/// Called when the build file has been renamed.</remarks>
public string FileName {
get {
return buildFile.FileName;
}
set {
buildFile.FileName = value;
SetNodeText();
}
}
/// <summary>
/// Sets the node text.
/// </summary>
void SetNodeText()
{
StringBuilder nodeText = new StringBuilder();
nodeText.Append(projectName);
nodeText.Append(Path.DirectorySeparatorChar);
nodeText.Append(buildFile.FileName);
if (buildFile.DefaultTarget != null) {
nodeText.Append(" [");
nodeText.Append(buildFile.DefaultTarget.Name);
nodeText.Append("]");
}
this.Text = nodeText.ToString();
}
/// <summary>
/// Adds the targets to the node.
/// </summary>
/// <param name="targets">A collection of NAntBuildTargets.</param>
void AddTargets(NAntBuildTargetCollection targets)
{
foreach (NAntBuildTarget target in targets) {
AddTarget(this, target);
}
}
/// <summary>
/// Adds a NAnt build target to the tree.
/// </summary>
/// <param name="node">The parent tree node.</param>
/// <param name="target">The NAnt build target.</param>
void AddTarget(TreeNode node, NAntBuildTarget target)
{
NAntBuildTargetTreeNode targetNode = new NAntBuildTargetTreeNode(target);
node.Nodes.Add(targetNode);
}
/// <summary>
/// Adds an error node to the tree.
/// </summary>
/// <param name="node">The parent tree node.</param>
void AddBuildFileError(TreeNode node, NAntBuildFileError buildFileError)
{
NAntBuildFileErrorTreeNode errorNode = new NAntBuildFileErrorTreeNode(buildFileError);
node.Nodes.Add(errorNode);
}
/// <summary>
/// Updates the display since the build file has changed.
/// </summary>
void SetBuildFile(NAntBuildFile buildFile)
{
Nodes.Clear();
this.buildFile = buildFile;
UpdateNode();
}
/// <summary>
/// Sets the node's image, text and adds target nodes.
/// </summary>
void UpdateNode()
{
this.ImageIndex = NAntPadTreeViewImageList.BuildFileImage;
this.SelectedImageIndex = NAntPadTreeViewImageList.BuildFileImage;
if (buildFile.HasError) {
this.ImageIndex = NAntPadTreeViewImageList.BuildFileErrorImage;
this.SelectedImageIndex = NAntPadTreeViewImageList.BuildFileErrorImage;
AddBuildFileError(this, buildFile.Error);
} else {
AddTargets(buildFile.Targets);
}
SetNodeText();
}
}
}

48
src/AddIns/Misc/NAntAddIn/Project/Src/Gui/NAntBuildTargetTreeNode.cs

@ -1,48 +0,0 @@ @@ -1,48 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using System.Drawing;
using System.Windows.Forms;
namespace ICSharpCode.NAntAddIn.Gui
{
/// <summary>
/// Represents a <see cref="NAntBuildTarget"/> in the
/// <see cref="NAntPadTreeView"/>.
/// </summary>
public class NAntBuildTargetTreeNode : TreeNode
{
NAntBuildTarget target;
public NAntBuildTargetTreeNode(NAntBuildTarget target)
{
if (target.IsDefault) {
this.Text = String.Concat(target.Name, " [default]");
this.ImageIndex = NAntPadTreeViewImageList.DefaultTargetImage;
this.SelectedImageIndex = NAntPadTreeViewImageList.DefaultTargetImage;
this.ForeColor = Color.Blue;
} else {
this.Text = target.Name;
this.ImageIndex = NAntPadTreeViewImageList.TargetImage;
this.SelectedImageIndex = NAntPadTreeViewImageList.TargetImage;
}
this.target = target;
}
/// <summary>
/// Gets the <see cref="NAntBuildTarget"/>
/// associated with this node.
/// </summary>
public NAntBuildTarget Target {
get {
return target;
}
}
}
}

270
src/AddIns/Misc/NAntAddIn/Project/Src/Gui/NAntPadContent.cs

@ -1,270 +0,0 @@ @@ -1,270 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using System.Windows.Forms;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.NAntAddIn.Gui
{
/// <summary>
/// The NAnt pad.
/// </summary>
public class NAntPadContent : AbstractPadContent
{
Panel contentPanel;
NAntPadTreeView treeView;
TextBox textBox;
ToolStrip toolStrip;
bool disposed;
public NAntPadContent()
{
LoggingService.Debug("NAntPadContent.ctor");
// Create main panel.
contentPanel = new Panel();
// Initialise treeview.
treeView = new NAntPadTreeView();
treeView.Dock = DockStyle.Fill;
// Create ToolStrip.
toolStrip = ToolbarService.CreateToolStrip(this, "/SharpDevelop/Pads/NAntPad/Toolbar");
toolStrip.GripStyle = ToolStripGripStyle.Hidden;
// Create text box.
textBox = new TextBox();
textBox.WordWrap = false;
textBox.Dock = DockStyle.Bottom;
// Tooltip.
ToolTip toolTip = new ToolTip();
toolTip.SetToolTip(textBox, StringParser.Parse("${res:ICSharpCode.NAntAddIn.NAntPadContent.NAntPropertiesToolTip}"));
contentPanel.Controls.Add(treeView);
contentPanel.Controls.Add(toolStrip);
contentPanel.Controls.Add(textBox);
ProjectService.SolutionLoaded += SolutionLoaded;
ProjectService.SolutionClosed += SolutionClosed;
ProjectService.ProjectItemRemoved += ProjectItemRemoved;
ProjectService.ProjectItemAdded += ProjectItemAdded;
FileService.FileRenamed += FileRenamed;
FileService.FileRemoved += FileRemoved;
FileUtility.FileSaved += FileSaved;
NAntRunnerSingleton.Runner.NAntStarted += NAntStarted;
NAntRunnerSingleton.Runner.NAntStopped += NAntStopped;
NAntRunnerSingleton.Runner.NAntExited += NAntExited;
// Due to lazy loading we have missed the solution loaded event
// so add it now.
AddSolutionToPad(ProjectService.OpenSolution);
}
/// <summary>
/// Gets any extra command line arguments entered in the pad's text box.
/// </summary>
public string Arguments {
get {
return textBox.Text;
}
}
public static NAntPadContent Instance {
get {
PadDescriptor descriptor = WorkbenchSingleton.Workbench.GetPad(typeof(NAntPadContent));
return (NAntPadContent)descriptor.PadContent;
}
}
/// <summary>
/// Refreshes the contents NAnt pad.
/// </summary>
public void Refresh()
{
treeView.Clear();
Solution solution = ProjectService.OpenSolution;
if (solution != null) {
treeView.AddSolution(solution);
}
}
/// <summary>
/// Gets the currently selected <see cref="NAntBuildFile"/>.
/// </summary>
/// <remarks>This will return a NAntBuildFile if
/// a target node is selected.</remarks>
public NAntBuildFile SelectedBuildFile {
get {
return treeView.SelectedBuildFile;
}
}
/// <summary>
/// Gets the current selected <see cref="NAntBuildTarget"/>
/// </summary>
public NAntBuildTarget SelectedTarget {
get {
return treeView.SelectedTarget;
}
}
#region AbstractPadContent requirements
/// <summary>
/// The <see cref="System.Windows.Forms.Control"/> representing the pad
/// </summary>
public override Control Control {
get {
return contentPanel;
}
}
/// <summary>
/// Refreshes the pad
/// </summary>
public override void RedrawContent()
{
}
/// <summary>
/// Cleans up all used resources
/// </summary>
public override void Dispose()
{
if (!disposed) {
disposed = true;
treeView.Dispose();
contentPanel.Dispose();
ProjectService.SolutionLoaded -= SolutionLoaded;
ProjectService.SolutionClosed -= SolutionClosed;
ProjectService.ProjectItemRemoved -= ProjectItemRemoved;
ProjectService.ProjectItemAdded -= ProjectItemAdded;
FileService.FileRenamed -= FileRenamed;
FileService.FileRemoved -= FileRemoved;
FileUtility.FileSaved -= FileSaved;
NAntRunnerSingleton.Runner.NAntStarted -= NAntStarted;
NAntRunnerSingleton.Runner.NAntStopped -= NAntStopped;
NAntRunnerSingleton.Runner.NAntExited -= NAntExited;
base.Dispose();
}
}
#endregion
void SolutionClosed(object sender, EventArgs e)
{
LoggingService.Debug("SolutionClosed.");
treeView.Clear();
UpdateToolbar();
}
void SolutionLoaded(object sender, SolutionEventArgs e)
{
LoggingService.Debug("SolutionLoaded.");
AddSolutionToPad(e.Solution);
}
void AddSolutionToPad(Solution solution)
{
if (solution != null) {
treeView.AddSolution(solution);
UpdateToolbar();
}
}
void UpdateToolbar()
{
ToolbarService.UpdateToolbar(toolStrip);
}
void FileRenamed(object sender, FileRenameEventArgs e)
{
if (!e.IsDirectory) {
// source and target are populated.
if (NAntBuildFile.IsBuildFile(e.SourceFile) && NAntBuildFile.IsBuildFile(e.TargetFile)) {
treeView.RenameBuildFile(e.SourceFile, e.TargetFile);
} else if (NAntBuildFile.IsBuildFile(e.SourceFile)) {
treeView.RemoveBuildFile(e.SourceFile);
} else {
AddBuildFile(e.TargetFile);
}
}
}
void AddBuildFile(string fileName)
{
if (ProjectService.OpenSolution == null) return;
IProject project = ProjectService.OpenSolution.FindProjectContainingFile(fileName);
if (project != null) {
treeView.AddBuildFile(project.Name, fileName);
}
}
void ProjectItemAdded(object sender, ProjectItemEventArgs e)
{
LoggingService.Debug("ProjectItemAdded.");
if (e.ProjectItem.ItemType != ItemType.Folder) {
if (NAntBuildFile.IsBuildFile(e.ProjectItem.FileName)) {
treeView.AddBuildFile(e.Project.Name, e.ProjectItem.FileName);
}
}
}
void ProjectItemRemoved(object sender, ProjectItemEventArgs e)
{
LoggingService.Debug("ProjectItemRemoved.");
if (e.ProjectItem.ItemType != ItemType.Folder) {
if (NAntBuildFile.IsBuildFile(e.ProjectItem.FileName)) {
treeView.RemoveBuildFile(e.ProjectItem.FileName);
}
}
}
void FileSaved(object sender, FileNameEventArgs e)
{
LoggingService.Debug("FileSaved.");
if (NAntBuildFile.IsBuildFile(e.FileName)) {
treeView.UpdateBuildFile(e.FileName);
}
}
void FileRemoved(object sender, FileEventArgs e)
{
LoggingService.Debug("FileRemoved.");
if (NAntBuildFile.IsBuildFile(e.FileName)) {
treeView.RemoveBuildFile(e.FileName);
}
}
void NAntStarted(object sender, EventArgs e)
{
UpdateToolbar();
}
void NAntStopped(object sender, EventArgs e)
{
UpdateToolbar();
}
void NAntExited(object sender, NAntExitEventArgs e)
{
WorkbenchSingleton.SafeThreadAsyncCall(UpdateToolbar);
}
}
}

383
src/AddIns/Misc/NAntAddIn/Project/Src/Gui/NAntPadTreeView.cs

@ -1,383 +0,0 @@ @@ -1,383 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using System.Diagnostics;
using System.IO;
using System.Windows.Forms;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.NAntAddIn.Gui
{
/// <summary>
/// NAnt pad's tree view. Shows a high level view of build file in
/// a set of projects.
/// </summary>
public class NAntPadTreeView : System.Windows.Forms.UserControl, IOwnerState
{
private System.Windows.Forms.TreeView treeView;
const string ContextMenuAddInTreePath = "/SharpDevelop/Pads/NAntPad/ContextMenu";
/// <summary>
/// The possible states of the tree view.
/// </summary>
public enum NAntPadTreeViewState {
Nothing = 0,
BuildFileSelected = 1,
TargetSelected = 2,
ErrorSelected = 4
}
/// <summary>
/// The current state of the tree view.
/// </summary>
NAntPadTreeViewState state = NAntPadTreeViewState.Nothing;
delegate void AddSolutionInvoker(Solution solution);
public NAntPadTreeView()
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
treeView.Sorted = true;
treeView.HideSelection = false;
treeView.ImageList = NAntPadTreeViewImageList.GetImageList();
treeView.ContextMenuStrip = MenuService.CreateContextMenu(this, ContextMenuAddInTreePath);
treeView.DoubleClick += new EventHandler(TreeViewDoubleClick);
}
/// <summary>
/// Gets the "ownerstate" condition.
/// </summary>
public Enum InternalState {
get {
return state;
}
}
/// <summary>
/// Clears all items from the tree view.
/// </summary>
public void Clear()
{
if (InvokeRequired) {
MethodInvoker invoker = new MethodInvoker(Clear);
Invoke(invoker);
} else {
treeView.Nodes.Clear();
}
}
/// <summary>
/// Adds items to the tree view for each build file that exists
/// in all the solution's subprojects.
/// </summary>
/// <param name="solution">A solution containing projects.</param>
public void AddSolution(Solution solution)
{
if (InvokeRequired) {
AddSolutionInvoker invoker = new AddSolutionInvoker(AddSolution);
Invoke(invoker);
} else {
foreach (IProject project in solution.Projects) {
AddProject(project);
}
}
}
/// <summary>
/// Adds items to the tree view for each build file that exist
/// in a project.
/// </summary>
/// <param name="project">A SharpDevelop project.</param>
public void AddProject(IProject project)
{
Debug.Assert(!InvokeRequired, "AddProject InvokeRequired");
foreach (ProjectItem projectItem in project.Items) {
if (NAntBuildFile.IsBuildFile(projectItem.FileName)) {
AddBuildFile(project.Name, projectItem.FileName);
}
}
}
/// <summary>
/// Removes the specified build file from the
/// tree view.</summary>
public void RemoveBuildFile(string fileName)
{
Debug.Assert(!InvokeRequired, "RemoveBuildFile InvokeRequired");
NAntBuildFileTreeNode node = FindMatchingNode(fileName);
if (node != null) {
node.Remove();
}
}
/// <summary>
/// Renames the build file.
/// </summary>
/// <param name="oldFileName">The filename to update.</param>
/// <param name="newFileName">The updated filename.</param>
public void RenameBuildFile(string oldFileName, string newFileName)
{
Debug.Assert(!InvokeRequired, "RenameBuildFile InvokeRequired");
NAntBuildFileTreeNode node = FindMatchingNode(oldFileName);
if (node != null) {
node.FileName = Path.GetFileName(newFileName);
}
}
/// <summary>
/// Updates the build file in the tree view.
/// </summary>
/// <param name="fileName">The build file name.</param>
public void UpdateBuildFile(string fileName)
{
Debug.Assert(!InvokeRequired, "UpdateBuildFile InvokeRequired");
NAntBuildFileTreeNode node = FindMatchingNode(fileName);
if (node != null) {
NAntBuildFile buildFile = new NAntBuildFile(fileName);
node.BuildFile = buildFile;
}
}
/// <summary>
/// Adds a build file to the tree.
/// </summary>
/// <param name="projectName">The name of the project.</param>
/// <param name="fileName">The build file name.</param>
/// <param name="debug"><see langword="true"/> if the project's
/// active configuration is debug; <see langword="false"/>
/// otherwise.</param>
public void AddBuildFile(string projectName, string fileName)
{
Debug.Assert(!InvokeRequired, "AddBuildFile InvokeRequired");
NAntBuildFile buildFile = new NAntBuildFile(fileName);
NAntBuildFileTreeNode node = new NAntBuildFileTreeNode(projectName, buildFile);
treeView.Nodes.Add(node);
}
/// <summary>
/// Gets the currently selected <see cref="NAntBuildFile"/>.
/// </summary>
/// <remarks>This will return a NAntBuildFile if
/// a target node is selected.</remarks>
public NAntBuildFile SelectedBuildFile {
get {
NAntBuildFile buildFile = null;
TreeNode selectedNode = treeView.SelectedNode;
if (selectedNode is NAntBuildFileTreeNode) {
NAntBuildFileTreeNode buildNode = (NAntBuildFileTreeNode)selectedNode;
buildFile = buildNode.BuildFile;
} else if(selectedNode is NAntBuildTargetTreeNode) {
NAntBuildTargetTreeNode targetNode = (NAntBuildTargetTreeNode)selectedNode;
NAntBuildFileTreeNode buildNode = (NAntBuildFileTreeNode)targetNode.Parent;
buildFile = buildNode.BuildFile;
} else if(selectedNode is NAntBuildFileErrorTreeNode) {
NAntBuildFileErrorTreeNode errorNode = (NAntBuildFileErrorTreeNode)selectedNode;
NAntBuildFileTreeNode buildNode = (NAntBuildFileTreeNode)errorNode.Parent;
buildFile = buildNode.BuildFile;
}
return buildFile;
}
}
/// <summary>
/// Gets the current selected <see cref="NAntBuildTarget"/>
/// </summary>
public NAntBuildTarget SelectedTarget {
get {
NAntBuildTarget target = null;
NAntBuildTargetTreeNode targetNode = treeView.SelectedNode as NAntBuildTargetTreeNode;
if (targetNode != null) {
target = targetNode.Target;
}
return target;
}
}
/// <summary>
/// Gets the current selected <see cref="NAntBuildFileError"/>
/// </summary>
public NAntBuildFileError SelectedError {
get {
NAntBuildFileError error = null;
NAntBuildFileErrorTreeNode errorNode = treeView.SelectedNode as NAntBuildFileErrorTreeNode;
if (errorNode != null) {
error = errorNode.Error;
}
return error;
}
}
/// <summary>
/// Gets whether a target is selected.
/// </summary>
public bool IsTargetSelected {
get {
bool isSelected = false;
if (SelectedTarget != null) {
isSelected = true;
}
return isSelected;
}
}
#region Windows Forms Designer generated code
/// <summary>
/// This method is required for Windows Forms designer support.
/// Do not change the method contents inside the source code editor. The Forms designer might
/// not be able to load this method if it was changed manually.
/// </summary>
private void InitializeComponent() {
this.treeView = new System.Windows.Forms.TreeView();
this.SuspendLayout();
//
// treeView
//
this.treeView.Dock = System.Windows.Forms.DockStyle.Fill;
this.treeView.ImageIndex = -1;
this.treeView.Location = new System.Drawing.Point(0, 0);
this.treeView.Name = "treeView";
this.treeView.SelectedImageIndex = -1;
this.treeView.Size = new System.Drawing.Size(292, 266);
this.treeView.TabIndex = 0;
this.treeView.MouseDown += new System.Windows.Forms.MouseEventHandler(this.TreeViewMouseDown);
//
// NAntPadTreeView
//
this.Controls.Add(this.treeView);
this.Name = "NAntPadTreeView";
this.Size = new System.Drawing.Size(292, 266);
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// User clicked the tree view.
/// </summary>
/// <param name="sender">The event source.</param>
/// <param name="e">The event arguments.</param>
void TreeViewMouseDown(object sender, MouseEventArgs e)
{
TreeNode node = treeView.GetNodeAt(e.X, e.Y);
treeView.SelectedNode = node;
state = NAntPadTreeViewState.Nothing;
if (IsBuildFileNodeSelected) {
state = NAntPadTreeViewState.BuildFileSelected;
}
if (IsBuildTargetNodeSelected) {
state = NAntPadTreeViewState.TargetSelected;
}
if (IsBuildFileErrorNodeSelected) {
state = NAntPadTreeViewState.ErrorSelected;
}
}
/// <summary>
/// Gets whether a build file is selected.
/// </summary>
bool IsBuildFileNodeSelected {
get {
return treeView.SelectedNode is NAntBuildFileTreeNode;
}
}
/// <summary>
/// Gets whether a target is selected.
/// </summary>
bool IsBuildTargetNodeSelected {
get {
return treeView.SelectedNode is NAntBuildTargetTreeNode;
}
}
/// <summary>
/// Gets whether a build file error is selected.
/// </summary>
bool IsBuildFileErrorNodeSelected {
get {
return treeView.SelectedNode is NAntBuildFileErrorTreeNode;
}
}
/// <summary>
/// Double clicking a node on the tree view opens the corresponding
/// file.
/// </summary>
/// <param name="sender">The event source.</param>
/// <param name="e">The event arguments.</param>
void TreeViewDoubleClick(object sender, EventArgs e)
{
NAntBuildFile buildFile = SelectedBuildFile;
if (buildFile != null) {
string fileName = Path.Combine(buildFile.Directory, buildFile.FileName);
if (IsBuildTargetNodeSelected) {
FileService.JumpToFilePosition(fileName, SelectedTarget.Line, SelectedTarget.Column);
} else if (IsBuildFileErrorNodeSelected) {
FileService.JumpToFilePosition(fileName, SelectedError.Line, SelectedError.Column);
} else {
FileService.OpenFile(fileName);
}
}
}
/// <summary>
/// Looks for the tree node that is displaying the specified
/// build file.
/// </summary>
/// <param name="fileName">The build file to look for.</param>
/// <returns>The matching tree node if the build file exists
/// in the tree; otherwise <see langword="null"/>.</returns>
NAntBuildFileTreeNode FindMatchingNode(string fileName)
{
NAntBuildFileTreeNode matchedNode = null;
foreach (NAntBuildFileTreeNode node in treeView.Nodes) {
string nodeFileName = Path.Combine(node.BuildFile.Directory, node.BuildFile.FileName);
if (String.Compare(Path.GetFullPath(fileName), Path.GetFullPath(nodeFileName), true) == 0) {
matchedNode = node;
break;
}
}
return matchedNode;
}
}
}

64
src/AddIns/Misc/NAntAddIn/Project/Src/Gui/NAntPadTreeViewImageList.cs

@ -1,64 +0,0 @@ @@ -1,64 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using System.Windows.Forms;
using ICSharpCode.SharpDevelop;
namespace ICSharpCode.NAntAddIn.Gui
{
/// <summary>
/// Represents the images that are used in the
/// <see cref="NAntPadTreeView"/>.
/// </summary>
public class NAntPadTreeViewImageList
{
/// <summary>
/// The NAnt build file image index.
/// </summary>
public static int BuildFileImage = 0;
/// <summary>
/// The NAnt build target image index.
/// </summary>
public static int TargetImage = 1;
/// <summary>
/// The NAnt default build target image index.
/// </summary>
public static int DefaultTargetImage = 2;
/// <summary>
/// The error icon displayed when the build file has errors.
/// </summary>
public static int BuildFileErrorImage = 3;
/// <summary>
/// The error icon displayed as the first target when the build file has errors.
/// </summary>
public static int TargetErrorImage = 4;
NAntPadTreeViewImageList()
{
}
/// <summary>
/// Creates an image list to be used in the
/// <see cref="NAntPadTreeView"/>.</summary>
public static ImageList GetImageList()
{
ImageList imageList = new ImageList();
imageList.Images.Add(IconService.GetBitmap("NAntAddIn.Icons.16x16.BuildFile"));
imageList.Images.Add(IconService.GetBitmap("NAntAddIn.Icons.16x16.BuildTarget"));
imageList.Images.Add(IconService.GetBitmap("NAntAddIn.Icons.16x16.DefaultBuildTarget"));
imageList.Images.Add(IconService.GetBitmap("NAntAddIn.Icons.16x16.BuildFileError"));
imageList.Images.Add(IconService.GetBitmap("NAntAddIn.Icons.16x16.BuildTargetError"));
return imageList;
}
}
}

23
src/AddIns/Misc/NAntAddIn/Project/Src/IsNAntRunningCondition.cs

@ -1,23 +0,0 @@ @@ -1,23 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using ICSharpCode.Core;
namespace ICSharpCode.NAntAddIn
{
/// <summary>
/// Determines whether #develop is currently running NAnt.
/// </summary>
public class IsNAntRunningCondition : IConditionEvaluator
{
public bool IsValid(object caller, Condition condition)
{
return NAntRunnerSingleton.Runner.IsRunning;
}
}
}

37
src/AddIns/Misc/NAntAddIn/Project/Src/NAntAddInException.cs

@ -1,37 +0,0 @@ @@ -1,37 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using System.Runtime.Serialization;
namespace ICSharpCode.NAntAddIn
{
/// <summary>
/// The exception that is thrown when a non-fatal
/// error occurs in the NAnt add-in.
/// </summary>
[Serializable()]
public class NAntAddInException : ApplicationException
{
public NAntAddInException()
{
}
public NAntAddInException(string message)
: base(message)
{
}
public NAntAddInException(string message, Exception innerException) : base(message, innerException)
{
}
protected NAntAddInException(SerializationInfo info, StreamingContext context) : base(info, context)
{
}
}
}

360
src/AddIns/Misc/NAntAddIn/Project/Src/NAntBuildFile.cs

@ -1,360 +0,0 @@ @@ -1,360 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using System.IO;
using System.Xml;
namespace ICSharpCode.NAntAddIn
{
/// <summary>
/// Represents a NAnt Build File.
/// </summary>
public class NAntBuildFile
{
/// <summary>
/// Standard NAnt build file's extension.
/// </summary>
public static readonly string BuildFileNameExtension = ".build";
/// <summary>
/// Standard NAnt include file's extension.
/// </summary>
public static readonly string IncludeFileNameExtension = ".include";
static readonly string TargetElementName = "target";
static readonly string ProjectElementName = "project";
static readonly string NameAttributeName = "name";
static readonly string DefaultAttributeName = "default";
string directory = String.Empty;
string fileName = String.Empty;
string name = String.Empty;
string defaultTargetName = String.Empty;
NAntBuildFileError buildFileError;
NAntBuildTargetCollection targets = new NAntBuildTargetCollection();
NAntBuildTarget defaultTarget;
enum ParseState
{
Nothing = 0,
WaitingForProjectName = 1,
WaitingForTargetName = 2
}
/// <summary>
/// Creates a new instance of the <see cref="NAntBuildFile"/>
/// class.
/// </summary>
/// <param name="fileName">The build filename.</param>
public NAntBuildFile(string fileName)
{
this.directory = Path.GetDirectoryName(fileName);
this.fileName = Path.GetFileName(fileName);
ReadBuildFile(fileName);
}
/// <summary>
/// Creates a new instance of the <see cref="NAntBuildFile"/>
/// class.
/// </summary>
/// <param name="reader">The <see cref="TextReader"/> used to
/// feed the XML data into the <see cref="NAntBuildFile"/>
/// object.</param>
public NAntBuildFile(TextReader reader)
{
ParseBuildFile(reader);
}
/// <summary>
/// Gets or sets the filename without the path information.
/// </summary>
public string FileName {
get {
return fileName;
}
set {
fileName = value;
}
}
/// <summary>
/// Gets the build file's path information.
/// </summary>
public string Directory {
get {
return directory;
}
}
/// <summary>
/// Gets the project name.
/// </summary>
public string Name {
get {
return name;
}
}
/// <summary>
/// Checks the build file is a NAnt build file.
/// </summary>
public static bool IsBuildFile(string fileName)
{
bool isBuildFile = false;
string extension = Path.GetExtension(fileName);
if (String.Compare(extension, BuildFileNameExtension, true) == 0) {
isBuildFile = true;
} else if (String.Compare(extension, IncludeFileNameExtension, true) == 0) {
isBuildFile = true;
}
return isBuildFile;
}
/// <summary>
/// Gets the NAnt build targets.
/// </summary>
public NAntBuildTargetCollection Targets {
get {
return targets;
}
}
/// <summary>
/// Gets the default NAnt target.
/// </summary>
public NAntBuildTarget DefaultTarget {
get {
return defaultTarget;
}
}
/// <summary>
/// Gets whether there is an error with this build file.
/// </summary>
public bool HasError {
get {
return (buildFileError != null);
}
}
/// <summary>
/// Gets the error associated with the build file.
/// </summary>
public NAntBuildFileError Error {
get {
return buildFileError;
}
}
/// <summary>
/// Reads the NAnt build file and extracts target names.
/// </summary>
/// <param name="fileName">The name of the build file.</param>
void ReadBuildFile(string fileName)
{
StreamReader reader = new StreamReader(fileName, true);
ParseBuildFile(reader);
}
/// <summary>
/// Gets the default target's name or returns an empty string.
/// </summary>
/// <param name="root">The root node of the build file.</param>
/// <returns>The default target's name or an empty string if
/// it does not exist.</returns>
string GetDefaultTargetName(XmlElement root)
{
string defaultTargetName = String.Empty;
XmlAttribute nameAttribute = root.Attributes["default"];
if (nameAttribute != null) {
defaultTargetName = nameAttribute.Value;
}
return defaultTargetName;
}
/// <summary>
/// Gets the build file's project name or returns an empty string.
/// </summary>
/// <param name="root">The root node of the build file.</param>
/// <returns>The project name or an empty string if
/// it does not exist.</returns>
string GetProjectName(XmlElement root)
{
string projectName = String.Empty;
XmlAttribute nameAttribute = root.Attributes["name"];
if (nameAttribute != null) {
projectName = nameAttribute.Value;
}
return projectName;
}
/// <summary>
/// Tests whether <paramref name="name"/> matches the
/// default target name.
/// </summary>
/// <param name="defaultTargetName">The default target
/// name.</param>
/// <param name="targetName">A target's name.</param>
/// <returns><see langword="true"/> if the target name matches
/// the default; otherwise <see langword="false"/>.</returns>
bool IsDefaultTargetName(string defaultTargetName, string targetName)
{
bool isDefault = false;
if (defaultTargetName.Length > 0) {
if (String.Compare(defaultTargetName, targetName, true) == 0) {
isDefault = true;
}
}
return isDefault;
}
/// <summary>
/// Parse the NAnt build file.
/// </summary>
/// <param name="textReader">A TextReader from which to read
/// the build file.</param>
void ParseBuildFile(TextReader textReader)
{
XmlTextReader xmlReader = new XmlTextReader(textReader);
try
{
ParseState state = ParseState.WaitingForProjectName;
while(xmlReader.Read())
{
if (state == ParseState.WaitingForProjectName) {
if (IsProjectElement(xmlReader)) {
ParseProjectElement(xmlReader);
state = ParseState.WaitingForTargetName;
}
} else {
if (IsTargetElement(xmlReader)) {
ParseTargetElement(xmlReader);
}
}
}
} catch(XmlException ex) {
buildFileError = new NAntBuildFileError(ex.Message, ex.LineNumber - 1, ex.LinePosition - 1);
} finally {
xmlReader.Close();
}
}
/// <summary>
/// Parses the current XmlTextReader node if it
/// is the NAnt Project element.
/// </summary>
/// <param name="xmlReader">An XmlTextReader currently being
/// read.</param>
void ParseProjectElement(XmlTextReader xmlReader)
{
name = GetAttribute(xmlReader, NameAttributeName);
defaultTargetName = GetAttribute(xmlReader, DefaultAttributeName);
}
/// <summary>
/// Tests whether the current element is the project element.
/// </summary>
/// <param name="xmlReader"></param>
/// <returns><see langword="true"/> if the current
/// element is the project element;
/// <see langword="false"/> otherwise</returns>
bool IsProjectElement(XmlTextReader xmlReader)
{
bool isProjectElement = false;
if (xmlReader.NodeType == XmlNodeType.Element) {
if (xmlReader.Name == ProjectElementName) {
isProjectElement = true;
}
}
return isProjectElement;
}
/// <summary>
/// Tests whether the current element is a target element.
/// </summary>
/// <param name="xmlReader">An xml text reader currently
/// reading the build file xml.</param>
/// <returns><see langword="true"/> if the current
/// element is a target element;
/// <see langword="false"/> otherwise</returns>
bool IsTargetElement(XmlTextReader xmlReader)
{
bool isTargetElement = false;
if (xmlReader.NodeType == XmlNodeType.Element) {
if (xmlReader.Name == TargetElementName) {
isTargetElement = true;
}
}
return isTargetElement;
}
/// <summary>
/// Parses the current XmlTextReader node if it
/// is the NAnt Target element.
/// </summary>
void ParseTargetElement(XmlTextReader xmlReader)
{
// Take off one for line/col since SharpDevelop is zero based.
int line = xmlReader.LineNumber - 1;
int col = xmlReader.LinePosition - 1;
string targetName = GetAttribute(xmlReader, NameAttributeName);
bool isDefaultTarget = IsDefaultTargetName(defaultTargetName, targetName);
NAntBuildTarget target =
new NAntBuildTarget(targetName, isDefaultTarget, line, col);
targets.Add(target);
if (isDefaultTarget) {
defaultTarget = target;
}
}
/// <summary>
/// Gets the named attribute's value.
/// </summary>
/// <returns>The attribute's value or an empty string if
/// it was not found.
/// </returns>
string GetAttribute(XmlTextReader xmlReader, string name)
{
string attributeValue = String.Empty;
if (xmlReader.MoveToAttribute(name)) {
if (xmlReader.Value != null) {
attributeValue = xmlReader.Value;
}
}
return attributeValue;
}
}
}

52
src/AddIns/Misc/NAntAddIn/Project/Src/NAntBuildFileError.cs

@ -1,52 +0,0 @@ @@ -1,52 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
namespace ICSharpCode.NAntAddIn
{
/// <summary>
/// Represents an error found in the NAnt build file.
/// </summary>
public class NAntBuildFileError
{
string message = String.Empty;
int line;
int column;
public NAntBuildFileError(string message, int line, int column)
{
this.message = message;
this.line = line;
this.column = column;
}
public string Message {
get {
return message;
}
}
public int Column {
get {
return column;
}
set {
column = value;
}
}
public int Line {
get {
return line;
}
set {
line = value;
}
}
}
}

84
src/AddIns/Misc/NAntAddIn/Project/Src/NAntBuildTarget.cs

@ -1,84 +0,0 @@ @@ -1,84 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
namespace ICSharpCode.NAntAddIn
{
/// <summary>
/// Represents a NAnt build target.
/// </summary>
public class NAntBuildTarget
{
string name = String.Empty;
bool isDefault;
int line;
int column;
public NAntBuildTarget()
{
}
/// <summary>
/// Creates a new instance of the <see cref="NAntBuildTarget"/>
/// with the specified name.
/// </summary>
/// <param name="name">The target name.</param>
/// <param name="isDefault"><see langword="true"/> if the
/// target is the default target; otherwise
/// <see langword="false"/>.</param>
/// <param name="line">The line number of the target element
/// in the build file.</param>
/// <param name="col">The column number of the target element
/// in the build file.</param>
public NAntBuildTarget(string name, bool isDefault, int line, int col)
{
this.name = name;
this.isDefault = isDefault;
this.line = line;
this.column = col;
}
/// <summary>
/// Gets the name of the target.
/// </summary>
public string Name {
get {
return name;
}
}
/// <summary>
/// Gets whether this is the default target.
/// </summary>
public bool IsDefault {
get {
return isDefault;
}
}
/// <summary>
/// Gets the line in the build file where this
/// target can be found.
/// </summary>
public int Line {
get {
return line;
}
}
/// <summary>
/// Gets the column in the build file where this
/// target can be found.
/// </summary>
public int Column {
get {
return column;
}
}
}
}

252
src/AddIns/Misc/NAntAddIn/Project/Src/NAntBuildTargetCollection.cs

@ -1,252 +0,0 @@ @@ -1,252 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using System.Collections;
namespace ICSharpCode.NAntAddIn
{
/// <summary>
/// <para>
/// A collection that stores <see cref='NAntBuildTarget'/> objects.
/// </para>
/// </summary>
/// <seealso cref='NAntBuildTargetCollection'/>
[Serializable()]
public class NAntBuildTargetCollection : CollectionBase {
/// <summary>
/// <para>
/// Initializes a new instance of <see cref='NAntBuildTargetCollection'/>.
/// </para>
/// </summary>
public NAntBuildTargetCollection()
{
}
/// <summary>
/// <para>
/// Initializes a new instance of <see cref='NAntBuildTargetCollection'/> based on another <see cref='NAntBuildTargetCollection'/>.
/// </para>
/// </summary>
/// <param name='val'>
/// A <see cref='NAntBuildTargetCollection'/> from which the contents are copied
/// </param>
public NAntBuildTargetCollection(NAntBuildTargetCollection val)
{
this.AddRange(val);
}
/// <summary>
/// <para>
/// Initializes a new instance of <see cref='NAntBuildTargetCollection'/> containing any array of <see cref='NAntBuildTarget'/> objects.
/// </para>
/// </summary>
/// <param name='val'>
/// A array of <see cref='NAntBuildTarget'/> objects with which to intialize the collection
/// </param>
public NAntBuildTargetCollection(NAntBuildTarget[] val)
{
this.AddRange(val);
}
/// <summary>
/// <para>Represents the entry at the specified index of the <see cref='NAntBuildTarget'/>.</para>
/// </summary>
/// <param name='index'><para>The zero-based index of the entry to locate in the collection.</para></param>
/// <value>
/// <para> The entry at the specified index of the collection.</para>
/// </value>
/// <exception cref='System.ArgumentOutOfRangeException'><paramref name='index'/> is outside the valid range of indexes for the collection.</exception>
public NAntBuildTarget this[int index] {
get {
return ((NAntBuildTarget)(List[index]));
}
set {
List[index] = value;
}
}
/// <summary>
/// <para>Adds a <see cref='NAntBuildTarget'/> with the specified value to the
/// <see cref='NAntBuildTargetCollection'/> .</para>
/// </summary>
/// <param name='val'>The <see cref='NAntBuildTarget'/> to add.</param>
/// <returns>
/// <para>The index at which the new element was inserted.</para>
/// </returns>
/// <seealso cref='NAntBuildTargetCollection.AddRange'/>
public int Add(NAntBuildTarget val)
{
return List.Add(val);
}
/// <summary>
/// <para>Copies the elements of an array to the end of the <see cref='NAntBuildTargetCollection'/>.</para>
/// </summary>
/// <param name='val'>
/// An array of type <see cref='NAntBuildTarget'/> containing the objects to add to the collection.
/// </param>
/// <returns>
/// <para>None.</para>
/// </returns>
/// <seealso cref='NAntBuildTargetCollection.Add'/>
public void AddRange(NAntBuildTarget[] val)
{
for (int i = 0; i < val.Length; i++) {
this.Add(val[i]);
}
}
/// <summary>
/// <para>
/// Adds the contents of another <see cref='NAntBuildTargetCollection'/> to the end of the collection.
/// </para>
/// </summary>
/// <param name='val'>
/// A <see cref='NAntBuildTargetCollection'/> containing the objects to add to the collection.
/// </param>
/// <returns>
/// <para>None.</para>
/// </returns>
/// <seealso cref='NAntBuildTargetCollection.Add'/>
public void AddRange(NAntBuildTargetCollection val)
{
for (int i = 0; i < val.Count; i++)
{
this.Add(val[i]);
}
}
/// <summary>
/// <para>Gets a value indicating whether the
/// <see cref='NAntBuildTargetCollection'/> contains the specified <see cref='NAntBuildTarget'/>.</para>
/// </summary>
/// <param name='val'>The <see cref='NAntBuildTarget'/> to locate.</param>
/// <returns>
/// <para><see langword='true'/> if the <see cref='NAntBuildTarget'/> is contained in the collection;
/// otherwise, <see langword='false'/>.</para>
/// </returns>
/// <seealso cref='NAntBuildTargetCollection.IndexOf'/>
public bool Contains(NAntBuildTarget val)
{
return List.Contains(val);
}
/// <summary>
/// <para>Copies the <see cref='NAntBuildTargetCollection'/> values to a one-dimensional <see cref='System.Array'/> instance at the
/// specified index.</para>
/// </summary>
/// <param name='array'><para>The one-dimensional <see cref='System.Array'/> that is the destination of the values copied from <see cref='NAntBuildTargetCollection'/> .</para></param>
/// <param name='index'>The index in <paramref name='array'/> where copying begins.</param>
/// <returns>
/// <para>None.</para>
/// </returns>
/// <exception cref='System.ArgumentException'><para><paramref name='array'/> is multidimensional.</para> <para>-or-</para> <para>The number of elements in the <see cref='NAntBuildTargetCollection'/> is greater than the available space between <paramref name='arrayIndex'/> and the end of <paramref name='array'/>.</para></exception>
/// <exception cref='System.ArgumentNullException'><paramref name='array'/> is <see langword='null'/>. </exception>
/// <exception cref='System.ArgumentOutOfRangeException'><paramref name='arrayIndex'/> is less than <paramref name='array'/>'s lowbound. </exception>
/// <seealso cref='System.Array'/>
public void CopyTo(NAntBuildTarget[] array, int index)
{
List.CopyTo(array, index);
}
/// <summary>
/// <para>Returns the index of a <see cref='NAntBuildTarget'/> in
/// the <see cref='NAntBuildTargetCollection'/> .</para>
/// </summary>
/// <param name='val'>The <see cref='NAntBuildTarget'/> to locate.</param>
/// <returns>
/// <para>The index of the <see cref='NAntBuildTarget'/> of <paramref name='val'/> in the
/// <see cref='NAntBuildTargetCollection'/>, if found; otherwise, -1.</para>
/// </returns>
/// <seealso cref='NAntBuildTargetCollection.Contains'/>
public int IndexOf(NAntBuildTarget val)
{
return List.IndexOf(val);
}
/// <summary>
/// <para>Inserts a <see cref='NAntBuildTarget'/> into the <see cref='NAntBuildTargetCollection'/> at the specified index.</para>
/// </summary>
/// <param name='index'>The zero-based index where <paramref name='val'/> should be inserted.</param>
/// <param name='val'>The <see cref='NAntBuildTarget'/> to insert.</param>
/// <returns><para>None.</para></returns>
/// <seealso cref='NAntBuildTargetCollection.Add'/>
public void Insert(int index, NAntBuildTarget val)
{
List.Insert(index, val);
}
/// <summary>
/// <para>Returns an enumerator that can iterate through
/// the <see cref='NAntBuildTargetCollection'/> .</para>
/// </summary>
/// <returns><para>None.</para></returns>
/// <seealso cref='System.Collections.IEnumerator'/>
public new NAntBuildTargetEnumerator GetEnumerator()
{
return new NAntBuildTargetEnumerator(this);
}
/// <summary>
/// <para> Removes a specific <see cref='NAntBuildTarget'/> from the
/// <see cref='NAntBuildTargetCollection'/> .</para>
/// </summary>
/// <param name='val'>The <see cref='NAntBuildTarget'/> to remove from the <see cref='NAntBuildTargetCollection'/> .</param>
/// <returns><para>None.</para></returns>
/// <exception cref='System.ArgumentException'><paramref name='val'/> is not found in the Collection. </exception>
public void Remove(NAntBuildTarget val)
{
List.Remove(val);
}
public class NAntBuildTargetEnumerator : IEnumerator
{
IEnumerator baseEnumerator;
IEnumerable temp;
public NAntBuildTargetEnumerator(NAntBuildTargetCollection mappings)
{
this.temp = ((IEnumerable)(mappings));
this.baseEnumerator = temp.GetEnumerator();
}
public NAntBuildTarget Current {
get {
return ((NAntBuildTarget)(baseEnumerator.Current));
}
}
object IEnumerator.Current {
get {
return baseEnumerator.Current;
}
}
public bool MoveNext()
{
return baseEnumerator.MoveNext();
}
bool IEnumerator.MoveNext()
{
return baseEnumerator.MoveNext();
}
public void Reset()
{
baseEnumerator.Reset();
}
void IEnumerator.Reset()
{
baseEnumerator.Reset();
}
}
}
}

59
src/AddIns/Misc/NAntAddIn/Project/Src/NAntExitEventArgs.cs

@ -1,59 +0,0 @@ @@ -1,59 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
namespace ICSharpCode.NAntAddIn
{
/// <summary>
/// Represents the method that will handle the
/// <see cref="NAntRunner.NAntExit"/> event.
/// </summary>
public delegate void NAntExitEventHandler(object sender, NAntExitEventArgs e);
/// <summary>
/// The <see cref="NAntRunner.NAntExit"/> event arguments.
/// </summary>
public class NAntExitEventArgs : EventArgs
{
string output;
int exitCode;
string error;
public NAntExitEventArgs(string output, string error, int exitCode)
{
this.output = output;
this.error = error;
this.exitCode = exitCode;
}
/// <summary>
/// Gets the command line output from NAnt.
/// </summary>
public string Output {
get {
return output;
}
}
public string Error {
get {
return error;
}
}
/// <summary>
/// Gets the NAnt exit code.
/// </summary>
public int ExitCode {
get {
return exitCode;
}
}
}
}

324
src/AddIns/Misc/NAntAddIn/Project/Src/NAntOutputParser.cs

@ -1,324 +0,0 @@ @@ -1,324 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using System.IO;
using System.Text.RegularExpressions;
using ICSharpCode.SharpDevelop;
namespace ICSharpCode.NAntAddIn
{
/// <summary>
/// Utility class that parses the console output from NAnt.
/// </summary>
public class NAntOutputParser
{
NAntOutputParser()
{
}
/// <summary>
/// Parses the NAnt console output and extracts a set of
/// Tasks.
/// </summary>
/// <param name="output">The NAnt console output to parse.</param>
/// <returns>A <see cref="TaskCollection"/>.</returns>
public static TaskCollection Parse(string output)
{
TaskCollection tasks = new TaskCollection();
output = output.Replace("\r\n", "\n");
// Look for errors on a per line basis.
Task task = null;
StringReader reader = new StringReader(output);
while (reader.Peek() != -1) {
string currentLine = reader.ReadLine();
if (currentLine.StartsWith("BUILD FAILED")) {
break;
}
task = ParseLine(currentLine);
if (task != null) {
tasks.Add(task);
}
}
reader.Close();
// Look for multiline build errors.
task = ParseMultilineBuildError(output);
if (task != null) {
tasks.Add(task);
}
// Look for NAnt build failed.
task = ParseNAntBuildFailedError(output);
if (task != null) {
tasks.Add(task);
}
return tasks;
}
/// <summary>
/// Parses a single line of text looking for errors.
/// </summary>
/// <param name="textLine">A NAnt output line.</param>
/// <returns>A <see cref="Task"/> if the line contains an error or
/// a warning; otherwise <see langword="null"/>.</returns>
static Task ParseLine(string textLine)
{
Task task = null;
task = ParseCSharpError(textLine);
if (task == null) {
task = ParseVBError(textLine);
}
if (task == null) {
task = ParseFatalError(textLine);
}
if (task == null) {
task = ParseVBFatalError(textLine);
}
if (task == null) {
task = ParseNAntWarning(textLine);
}
if (task == null) {
task = ParseNAntError(textLine);
}
return task;
}
/// <summary>
/// Looks for errors of the form
/// "C:/MyProject/MyProject.build(40,3): error CS1000: An error occurred."
/// </summary>
/// <param name="textLine">The line of text to parse.</param>
/// <returns>A <see cref="Task"/> if an error was found; otherwise
/// <see langword="null"/>.</returns>
static Task ParseCSharpError(string textLine)
{
Task task = null;
Match match = Regex.Match(textLine, @"^.*?(\w+:[/\\].*?)\(([\d]*),([\d]*)\): (.*?) (.*?): (.*?)$");
if (match.Success) {
try {
// Take off 1 for line/col since SharpDevelop is zero index based.
int line = Convert.ToInt32(match.Groups[2].Value) - 1;
int col = Convert.ToInt32(match.Groups[3].Value) - 1;
string description = String.Concat(match.Groups[6].Value, " (", match.Groups[5], ")");
TaskType taskType = TaskType.Error;
if (String.Compare(match.Groups[4].Value, "warning", true) == 0) {
taskType = TaskType.Warning;
}
task = new Task(match.Groups[1].Value, description, col, line, taskType);
} catch (Exception) {
// Ignore.
}
}
return task;
}
/// <summary>
/// Looks for errors of the form
/// "C:/MyProject/MyProject.build(40,3): ifnot is deprecated."
/// </summary>
/// <param name="textLine">The line of text to parse.</param>
/// <returns>A <see cref="Task"/> if an error was found; otherwise
/// <see langword="null"/>.</returns>
static Task ParseNAntError(string textLine)
{
Task task = null;
Match match = Regex.Match(textLine, @"^.*?(\w+:[/\\].*?)\(([\d]*),([\d]*)\): (.*?)$");
if (match.Success) {
try {
// Take off 1 for line/col since SharpDevelop is zero index based.
int line = Convert.ToInt32(match.Groups[2].Value) - 1;
int col = Convert.ToInt32(match.Groups[3].Value) - 1;
task = new Task(match.Groups[1].Value, match.Groups[4].Value, col, line, TaskType.Warning);
} catch (Exception) {
// Ignore.
}
}
return task;
}
/// <summary>
/// Looks for errors of the form
/// "C:/MyProject/MyProject.build(40): error CS1000: An error occurred."
/// </summary>
/// <remarks>
/// This should handle C++ errors too.</remarks>
/// <param name="textLine">The line of text to parse.</param>
/// <returns>A <see cref="Task"/> if an error was found; otherwise
/// <see langword="null"/>.</returns>
static Task ParseVBError(string textLine)
{
Task task = null;
Match match = Regex.Match(textLine, @"^.*?(\w+:[/\\].*?)\(([\d]*)\) : (.*?) (.*?): (.*?)$");
if (match.Success) {
try {
// Take off 1 for line/col since SharpDevelop is zero index based.
int line = Convert.ToInt32(match.Groups[2].Value) - 1;
string description = String.Concat(match.Groups[5].Value, " (", match.Groups[4], ")");
TaskType taskType = TaskType.Error;
if (String.Compare(match.Groups[3].Value, "warning", true) == 0) {
taskType = TaskType.Warning;
}
task = new Task(match.Groups[1].Value, description, 0, line, taskType);
} catch (Exception) {
// Ignore.
}
}
return task;
}
/// <summary>
/// Looks for errors of the form
/// "fatal error CS00042: An error occurred."
/// </summary>
/// <param name="textLine">The line of text to parse.</param>
/// <returns>A <see cref="Task"/> if an error was found; otherwise
/// <see langword="null"/>.</returns>
static Task ParseFatalError(string textLine)
{
Task task = null;
Match match = Regex.Match(textLine, @"^.*?(fatal error .*?: .*?)$");
if (match.Success) {
try {
task = new Task(String.Empty, match.Groups[1].Value, 0, 0, TaskType.Error);
} catch (Exception) {
// Ignore.
}
}
return task;
}
/// <summary>
/// Looks for errors of the form
/// "vbc : error BC31019: Unable to write to output file."
/// </summary>
/// <param name="textLine">The line of text to parse.</param>
/// <returns>A <see cref="Task"/> if an error was found; otherwise
/// <see langword="null"/>.</returns>
static Task ParseVBFatalError(string textLine)
{
Task task = null;
Match match = Regex.Match(textLine, @"^.*?vbc : error (.*?): (.*?)$");
if (match.Success) {
try {
string description = String.Concat(match.Groups[2].Value, " (", match.Groups[1].Value, ")");
task = new Task(String.Empty, description, 0, 0, TaskType.Error);
} catch (Exception) {
// Ignore.
}
}
return task;
}
/// <summary>
/// Looks for errors of the form
/// "fatal error CS00042: An error occurred."
/// </summary>
/// <param name="textLine">The line of text to parse.</param>
/// <returns>A <see cref="Task"/> if a warning was found; otherwise
/// <see langword="null"/>.</returns>
static Task ParseNAntWarning(string textLine)
{
Task task = null;
Match match = Regex.Match(textLine, @"^.*?(Read-only property .*? cannot be overwritten.)$");
if (match.Success) {
try {
task = new Task(String.Empty, match.Groups[1].Value, 0, 0, TaskType.Warning);
} catch (Exception) {
// Ignore.
}
}
return task;
}
/// <summary>
/// Looks for errors of the form
/// "BUILD FAILED"
/// "[csc] C:/foo/foo.cs(5,5):"
/// "Something bad happened."
/// </summary>
/// <param name="textLine">The line of text to parse.</param>
/// <returns>A <see cref="Task"/> if an error was found; otherwise
/// <see langword="null"/>.</returns>
static Task ParseNAntBuildFailedError(string output)
{
Task task = null;
Match match = Regex.Match(output, @"^BUILD FAILED.*?$\n^$\n^(\w+:[/\\].*?)\(([\d]*),([\d]*)\):$\n^(.*?)$\n^(.*?)$", RegexOptions.Multiline);
if (match.Success) {
try {
// Take off 1 for line/col since SharpDevelop is zero index based.
int line = Convert.ToInt32(match.Groups[2].Value) - 1;
int col = Convert.ToInt32(match.Groups[3].Value) - 1;
string description = String.Concat(match.Groups[4], Environment.NewLine, match.Groups[5]);
task = new Task(match.Groups[1].Value, description, col, line, TaskType.Error);
} catch(Exception) { };
} else {
match = Regex.Match(output, @"^BUILD FAILED$\n^$\n^(.*?)$", RegexOptions.Multiline);
if (match.Success) {
task = new Task(String.Empty, match.Groups[1].Value, 0, 0, TaskType.Error);
}
}
return task;
}
/// <summary>
/// Parses errors of the form.
/// "[delete] C:\foo\foo.build(94,5):"
/// "[delete] Cannot delete directory 'C:\foo\bin'. The directory does not exist."
/// </summary>
/// <param name="textLine">The line of text to parse.</param>
/// <returns>A <see cref="Task"/> if an error was found; otherwise
/// <see langword="null"/>.</returns>
static Task ParseMultilineBuildError(string output)
{
Task task = null;
Match match = Regex.Match(output, @"^.*?\[delete\] (\w+:[/\\].*?)\(([\d]*),([\d]*)\):$\n^.*?\[delete\] (.*?)$", RegexOptions.Multiline);
if (match.Success) {
try {
// Take off 1 for line/col since SharpDevelop is zero index based.
int line = Convert.ToInt32(match.Groups[2].Value) - 1;
int col = Convert.ToInt32(match.Groups[3].Value) - 1;
string description = String.Concat(match.Groups[4]);
task = new Task(match.Groups[1].Value, description, col, line, TaskType.Error);
} catch(Exception) { };
}
return task;
}
}
}

284
src/AddIns/Misc/NAntAddIn/Project/Src/NAntRunner.cs

@ -1,284 +0,0 @@ @@ -1,284 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using System.Text;
using ICSharpCode.SharpDevelop.Util;
namespace ICSharpCode.NAntAddIn
{
/// <summary>
/// Runs NAnt.
/// </summary>
public class NAntRunner
{
string arguments = String.Empty;
string buildFileName = String.Empty;
string nantFileName = String.Empty;
string workingDirectory = String.Empty;
bool verbose;
bool quiet;
bool showLogo;
bool debugMode;
ProcessRunner runner;
/// <summary>
/// Triggered when NAnt exits.
/// </summary>
public event NAntExitEventHandler NAntExited;
/// <summary>
/// The NAnt runner was started.
/// </summary>
public event EventHandler NAntStarted;
/// <summary>
/// The NAnt runner was stopped. Being stopped is not the
/// same as NAnt exiting.
/// </summary>
public event EventHandler NAntStopped;
/// <summary>
/// Triggered when an output line is received from NAnt.
/// </summary>
public event LineReceivedEventHandler OutputLineReceived;
public NAntRunner()
{
}
/// <summary>
/// Gets or sets the NAnt -buildfile parameter.
/// </summary>
public string BuildFileName {
get {
return buildFileName;
}
set {
buildFileName = value;
}
}
/// <summary>
/// Gets or sets the NAnt executable path.
/// </summary>
public string NAntFileName {
get {
return nantFileName;
}
set {
nantFileName = value;
}
}
public string WorkingDirectory {
get {
return workingDirectory;
}
set {
workingDirectory = value;
}
}
/// <summary>
/// Gets or sets the NAnt -verbose option.
/// </summary>
public bool Verbose {
get {
return verbose;
}
set {
verbose = value;
}
}
public string Arguments {
get {
return arguments;
}
set {
arguments = value;
}
}
/// <summary>
/// Gets or sets the NAnt -quiet option.
/// </summary>
public bool Quiet {
get {
return quiet;
}
set {
quiet = value;
}
}
/// <summary>
/// Maps to the NAnt -nologo option.
/// </summary>
public bool ShowLogo {
get {
return showLogo;
}
set {
showLogo = value;
}
}
/// <summary>
/// Gets or sets the NAnt -debug option.
/// </summary>
public bool DebugMode {
get {
return debugMode;
}
set {
debugMode = value;
}
}
/// <summary>
/// Gets the full NAnt command line that will be used by
/// the runner.
/// </summary>
public string CommandLine {
get {
return String.Concat(nantFileName, " ", GetArguments());
}
}
/// <summary>
/// Gets whether the NAnt runner is currently running.
/// </summary>
public bool IsRunning {
get {
bool isRunning = false;
if (runner != null) {
isRunning = runner.IsRunning;
}
return isRunning;
}
}
public void Start()
{
string arguments = GetArguments();
runner = new ProcessRunner();
runner.WorkingDirectory = workingDirectory;
runner.ProcessExited += new EventHandler(ProcessExited);
if (OutputLineReceived != null) {
runner.OutputLineReceived += new LineReceivedEventHandler(OnOutputLineReceived);
runner.ErrorLineReceived += new LineReceivedEventHandler(OnOutputLineReceived);
}
runner.Start(nantFileName, arguments);
OnNAntStarted();
}
/// <summary>
/// Stops the currently running NAnt instance.
/// </summary>
public void Stop()
{
if (runner != null) {
runner.Kill();
OnNAntStopped();
}
}
protected void OnNAntExited(string output, string error, int exitCode)
{
if (NAntExited != null) {
NAntExited(this, new NAntExitEventArgs(output, error, exitCode));
}
}
protected void OnNAntStarted()
{
if (NAntStarted != null) {
NAntStarted(this, new EventArgs());
}
}
protected void OnNAntStopped()
{
if (NAntStopped != null) {
NAntStopped(this, new EventArgs());
}
}
/// <summary>
/// Raises the <see cref="OutputLineReceived"/> event.
/// </summary>
/// <param name="sender">The event source.</param>
/// <param name="e">The event arguments.</param>
protected void OnOutputLineReceived(object sender, LineReceivedEventArgs e)
{
if (OutputLineReceived != null) {
OutputLineReceived(this, e);
}
}
/// <summary>
/// Handles the NAnt process exit event.
/// </summary>
/// <param name="sender">The event source.</param>
/// <param name="e">The event arguments.</param>
void ProcessExited(object sender, EventArgs e)
{
ProcessRunner runner = (ProcessRunner)sender;
OnNAntExited(runner.StandardOutput, runner.StandardError, runner.ExitCode);
}
/// <summary>
/// Adds extra command line arguments to those specified
/// by the user in the <see cref="Arguments"/> string.
/// </summary>
/// <returns></returns>
string GetArguments()
{
StringBuilder nantArguments = new StringBuilder();
if (!showLogo) {
nantArguments.Append("-nologo ");
}
if (verbose) {
nantArguments.Append("-v ");
}
if (quiet) {
nantArguments.Append("-q ");
}
if (debugMode) {
nantArguments.Append("-debug ");
}
if (buildFileName.Length > 0) {
nantArguments.Append("-buildfile:");
nantArguments.Append(buildFileName);
nantArguments.Append(" ");
}
nantArguments.Append(this.arguments);
return nantArguments.ToString();
}
}
}

39
src/AddIns/Misc/NAntAddIn/Project/Src/NAntRunnerSingleton.cs

@ -1,39 +0,0 @@ @@ -1,39 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
namespace ICSharpCode.NAntAddIn
{
/// <summary>
/// Single NAntRunner that is used by all commands.
/// </summary>
/// <remarks>
/// The NAnt add-in only allows one build to be run at a time.
/// </remarks>
public class NAntRunnerSingleton
{
static NAntRunner runner;
NAntRunnerSingleton()
{
}
/// <summary>
/// Gets the <see cref="NAntRunner"/> instance.
/// </summary>
public static NAntRunner Runner {
get {
if (runner == null) {
runner = new NAntRunner();
}
return runner;
}
}
}
}

253
src/AddIns/Misc/NAntAddIn/Project/Src/TaskCollection.cs

@ -1,253 +0,0 @@ @@ -1,253 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using System.Collections;
using ICSharpCode.SharpDevelop;
namespace ICSharpCode.NAntAddIn
{
/// <summary>
/// <para>
/// A collection that stores <see cref='Task'/> objects.
/// </para>
/// </summary>
/// <seealso cref='TaskCollection'/>
[Serializable()]
public class TaskCollection : CollectionBase {
/// <summary>
/// <para>
/// Initializes a new instance of <see cref='TaskCollection'/>.
/// </para>
/// </summary>
public TaskCollection()
{
}
/// <summary>
/// <para>
/// Initializes a new instance of <see cref='TaskCollection'/> based on another <see cref='TaskCollection'/>.
/// </para>
/// </summary>
/// <param name='val'>
/// A <see cref='TaskCollection'/> from which the contents are copied
/// </param>
public TaskCollection(TaskCollection val)
{
this.AddRange(val);
}
/// <summary>
/// <para>
/// Initializes a new instance of <see cref='TaskCollection'/> containing any array of <see cref='Task'/> objects.
/// </para>
/// </summary>
/// <param name='val'>
/// A array of <see cref='Task'/> objects with which to intialize the collection
/// </param>
public TaskCollection(Task[] val)
{
this.AddRange(val);
}
/// <summary>
/// <para>Represents the entry at the specified index of the <see cref='Task'/>.</para>
/// </summary>
/// <param name='index'><para>The zero-based index of the entry to locate in the collection.</para></param>
/// <value>
/// <para> The entry at the specified index of the collection.</para>
/// </value>
/// <exception cref='System.ArgumentOutOfRangeException'><paramref name='index'/> is outside the valid range of indexes for the collection.</exception>
public Task this[int index] {
get {
return ((Task)(List[index]));
}
set {
List[index] = value;
}
}
/// <summary>
/// <para>Adds a <see cref='Task'/> with the specified value to the
/// <see cref='TaskCollection'/> .</para>
/// </summary>
/// <param name='val'>The <see cref='Task'/> to add.</param>
/// <returns>
/// <para>The index at which the new element was inserted.</para>
/// </returns>
/// <seealso cref='TaskCollection.AddRange'/>
public int Add(Task val)
{
return List.Add(val);
}
/// <summary>
/// <para>Copies the elements of an array to the end of the <see cref='TaskCollection'/>.</para>
/// </summary>
/// <param name='val'>
/// An array of type <see cref='Task'/> containing the objects to add to the collection.
/// </param>
/// <returns>
/// <para>None.</para>
/// </returns>
/// <seealso cref='TaskCollection.Add'/>
public void AddRange(Task[] val)
{
for (int i = 0; i < val.Length; i++) {
this.Add(val[i]);
}
}
/// <summary>
/// <para>
/// Adds the contents of another <see cref='TaskCollection'/> to the end of the collection.
/// </para>
/// </summary>
/// <param name='val'>
/// A <see cref='TaskCollection'/> containing the objects to add to the collection.
/// </param>
/// <returns>
/// <para>None.</para>
/// </returns>
/// <seealso cref='TaskCollection.Add'/>
public void AddRange(TaskCollection val)
{
for (int i = 0; i < val.Count; i++)
{
this.Add(val[i]);
}
}
/// <summary>
/// <para>Gets a value indicating whether the
/// <see cref='TaskCollection'/> contains the specified <see cref='Task'/>.</para>
/// </summary>
/// <param name='val'>The <see cref='Task'/> to locate.</param>
/// <returns>
/// <para><see langword='true'/> if the <see cref='Task'/> is contained in the collection;
/// otherwise, <see langword='false'/>.</para>
/// </returns>
/// <seealso cref='TaskCollection.IndexOf'/>
public bool Contains(Task val)
{
return List.Contains(val);
}
/// <summary>
/// <para>Copies the <see cref='TaskCollection'/> values to a one-dimensional <see cref='System.Array'/> instance at the
/// specified index.</para>
/// </summary>
/// <param name='array'><para>The one-dimensional <see cref='System.Array'/> that is the destination of the values copied from <see cref='TaskCollection'/> .</para></param>
/// <param name='index'>The index in <paramref name='array'/> where copying begins.</param>
/// <returns>
/// <para>None.</para>
/// </returns>
/// <exception cref='System.ArgumentException'><para><paramref name='array'/> is multidimensional.</para> <para>-or-</para> <para>The number of elements in the <see cref='TaskCollection'/> is greater than the available space between <paramref name='arrayIndex'/> and the end of <paramref name='array'/>.</para></exception>
/// <exception cref='System.ArgumentNullException'><paramref name='array'/> is <see langword='null'/>. </exception>
/// <exception cref='System.ArgumentOutOfRangeException'><paramref name='arrayIndex'/> is less than <paramref name='array'/>'s lowbound. </exception>
/// <seealso cref='System.Array'/>
public void CopyTo(Task[] array, int index)
{
List.CopyTo(array, index);
}
/// <summary>
/// <para>Returns the index of a <see cref='Task'/> in
/// the <see cref='TaskCollection'/> .</para>
/// </summary>
/// <param name='val'>The <see cref='Task'/> to locate.</param>
/// <returns>
/// <para>The index of the <see cref='Task'/> of <paramref name='val'/> in the
/// <see cref='TaskCollection'/>, if found; otherwise, -1.</para>
/// </returns>
/// <seealso cref='TaskCollection.Contains'/>
public int IndexOf(Task val)
{
return List.IndexOf(val);
}
/// <summary>
/// <para>Inserts a <see cref='Task'/> into the <see cref='TaskCollection'/> at the specified index.</para>
/// </summary>
/// <param name='index'>The zero-based index where <paramref name='val'/> should be inserted.</param>
/// <param name='val'>The <see cref='Task'/> to insert.</param>
/// <returns><para>None.</para></returns>
/// <seealso cref='TaskCollection.Add'/>
public void Insert(int index, Task val)
{
List.Insert(index, val);
}
/// <summary>
/// <para>Returns an enumerator that can iterate through
/// the <see cref='TaskCollection'/> .</para>
/// </summary>
/// <returns><para>None.</para></returns>
/// <seealso cref='System.Collections.IEnumerator'/>
public new TaskEnumerator GetEnumerator()
{
return new TaskEnumerator(this);
}
/// <summary>
/// <para> Removes a specific <see cref='Task'/> from the
/// <see cref='TaskCollection'/> .</para>
/// </summary>
/// <param name='val'>The <see cref='Task'/> to remove from the <see cref='TaskCollection'/> .</param>
/// <returns><para>None.</para></returns>
/// <exception cref='System.ArgumentException'><paramref name='val'/> is not found in the Collection. </exception>
public void Remove(Task val)
{
List.Remove(val);
}
public class TaskEnumerator : IEnumerator
{
IEnumerator baseEnumerator;
IEnumerable temp;
public TaskEnumerator(TaskCollection mappings)
{
this.temp = ((IEnumerable)(mappings));
this.baseEnumerator = temp.GetEnumerator();
}
public Task Current {
get {
return ((Task)(baseEnumerator.Current));
}
}
object IEnumerator.Current {
get {
return baseEnumerator.Current;
}
}
public bool MoveNext()
{
return baseEnumerator.MoveNext();
}
bool IEnumerator.MoveNext()
{
return baseEnumerator.MoveNext();
}
public void Reset()
{
baseEnumerator.Reset();
}
void IEnumerator.Reset()
{
baseEnumerator.Reset();
}
}
}
}

39
src/AddIns/Misc/NAntAddIn/Test/AssemblyInfo.cs

@ -1,39 +0,0 @@ @@ -1,39 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System.Reflection;
using System.Runtime.CompilerServices;
// Information about this assembly is defined by the following
// attributes.
//
// change them to the information which is associated with the assembly
// you compile.
[assembly: AssemblyTitle("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// The assembly version has following format :
//
// Major.Minor.Build.Revision
//
// You can specify all values by your own or you can build default build and revision
// numbers with the '*' character (the default):
[assembly: AssemblyVersion("2.0.0.1")]
// The following attributes specify the key for the sign of your assembly. See the
// .NET Framework documentation for more information about signing.
// This is not required, if you don't want signing let these attributes like they're.
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("")]

129
src/AddIns/Misc/NAntAddIn/Test/CscNAntOutputTestFixture.cs

@ -1,129 +0,0 @@ @@ -1,129 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using ICSharpCode.SharpDevelop;
using NUnit.Framework;
namespace ICSharpCode.NAntAddIn.Tests
{
/// <summary>
/// Tests that C# compiler errors/warnings are located in the NAnt console
/// output.
/// </summary>
[TestFixture]
public class CscNAntOutputTestFixture
{
[Test]
public void ParseError085()
{
TaskCollection tasks = NAntOutputParser.Parse(GetNAntCscErrorOutput());
Assert.AreEqual(3, tasks.Count, "Should be three tasks.");
// First task.
Task task = tasks[0];
Assert.AreEqual("c:\\Projects\\dotnet\\Test\\corsavytest\\Foo.cs", task.FileName, "Task filename is incorrect.");
Assert.AreEqual(33, task.Line, "Task line is incorrect.");
Assert.AreEqual(3, task.Column, "Task column is incorrect.");
Assert.AreEqual(TaskType.Error, task.TaskType, "Should be error task.");
Assert.AreEqual(@"Invalid expression term '/' (CS1525)",
task.Description,
"Task description is wrong.");
// Second task.
task = tasks[1];
Assert.AreEqual("c:\\Projects\\dotnet\\Test\\corsavytest\\Foo.cs", task.FileName, "Task filename is incorrect.");
Assert.AreEqual(33, task.Line, "Task line is incorrect.");
Assert.AreEqual(4, task.Column, "Task column is incorrect.");
Assert.AreEqual(TaskType.Error, task.TaskType, "Should be error task.");
Assert.AreEqual(@"; expected (CS1002)",
task.Description,
"Task description is wrong.");
// Last task task.
task = tasks[2];
Assert.AreEqual(@"C:\Projects\dotnet\Test\corsavytest\corsavytest.build", task.FileName, "Task filename is incorrect.");
Assert.AreEqual(47, task.Line, "Task line is incorrect.");
Assert.AreEqual(5, task.Column, "Task column is incorrect.");
Assert.AreEqual(TaskType.Error, task.TaskType, "Should be error task.");
Assert.AreEqual(@"External Program Failed: C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\csc.exe (return code was 1)",
task.Description,
"Task description is wrong.");
}
[Test]
public void ParseWarning085()
{
TaskCollection tasks = NAntOutputParser.Parse(GetNAntCscWarningOutput());
Assert.AreEqual(1, tasks.Count, "Should be three tasks.");
// First task.
Task task = tasks[0];
Assert.AreEqual("c:\\Projects\\dotnet\\Test\\corsavytest\\Foo.cs", task.FileName, "Task filename is incorrect.");
Assert.AreEqual(38, task.Line, "Task line is incorrect.");
Assert.AreEqual(11, task.Column, "Task column is incorrect.");
Assert.AreEqual(TaskType.Warning, task.TaskType, "Should be error task.");
Assert.AreEqual(@"The variable 'Test' is assigned but its value is never used (CS0219)",
task.Description,
"Task description is wrong.");
}
string GetNAntCscErrorOutput()
{
return "Buildfile: file:///C:/Projects/dotnet/Test/corsavytest/corsavytest.build\r\n" +
"Target(s) specified: build \r\n" +
"\r\n" +
"\r\n" +
"init.debug:\r\n" +
"\r\n" +
"\r\n" +
"gacreferences.debug:\r\n" +
"\r\n" +
"\r\n" +
"build.debug:\r\n" +
"\r\n" +
" [csc] Compiling 3 files to 'C:\\Projects\\dotnet\\Test\\corsavytest\\bin\\Debug\\corsavytest.exe'.\r\n" +
" [csc] c:\\Projects\\dotnet\\Test\\corsavytest\\Foo.cs(34,4): error CS1525: Invalid expression term '/'\r\n" +
" [csc] c:\\Projects\\dotnet\\Test\\corsavytest\\Foo.cs(34,5): error CS1002: ; expected\r\n" +
"\r\n" +
"BUILD FAILED\r\n" +
"\r\n" +
"C:\\Projects\\dotnet\\Test\\corsavytest\\corsavytest.build(48,6):\r\n" +
"External Program Failed: C:\\WINDOWS\\Microsoft.NET\\Framework\\v1.1.4322\\csc.exe (return code was 1)\r\n" +
"\r\n" +
"Total time: 0.5 seconds.";
}
string GetNAntCscWarningOutput()
{
return "Buildfile: file:///C:/Projects/dotnet/Test/corsavytest/corsavytest.build\r\n" +
"Target(s) specified: build \r\n" +
"\r\n" +
"\r\n" +
"init.debug:\r\n" +
"\r\n" +
"\r\n" +
"gacreferences.debug:\r\n" +
"\r\n" +
"\r\n" +
"build.debug:\r\n" +
"\r\n" +
" [csc] Compiling 3 files to 'C:\\Projects\\dotnet\\Test\\corsavytest\\bin\\Debug\\corsavytest.exe'.\r\n" +
" [csc] c:\\Projects\\dotnet\\Test\\corsavytest\\Foo.cs(39,12): warning CS0219: The variable 'Test' is assigned but its value is never used\r\n" +
"\r\n" +
"build:\r\n" +
"\r\n" +
"\r\n" +
"BUILD SUCCEEDED\r\n" +
"\r\n" +
"Total time: 0.4 seconds.";
}
}
}

140
src/AddIns/Misc/NAntAddIn/Test/FatalErrorNAntOutputTestFixture.cs

@ -1,140 +0,0 @@ @@ -1,140 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using NUnit.Framework;
using ICSharpCode.NAntAddIn;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using System;
namespace ICSharpCode.NAntAddIn.Tests
{
/// <summary>
/// Tests that fatal errors are parsed correctly.
/// </summary>
[TestFixture]
public class FatalErrorNAntOutputTestFixture
{
[Test]
public void ParseCscError085()
{
TaskCollection tasks = NAntOutputParser.Parse(GetNAntCscOutput());
Assert.AreEqual(2, tasks.Count, "Should be two tasks.");
Task task = tasks[0];
Assert.AreEqual(String.Empty, task.FileName, "Task filename should be blank.");
Assert.AreEqual(TaskType.Error, task.TaskType, "Should be an error task.");
Assert.AreEqual(0, task.Line, "Should be line number 0.");
Assert.AreEqual(0, task.Column, "Should be col number 0");
Assert.AreEqual("fatal error CS0042: Unexpected error creating debug information file 'c:\\Projects\\dotnet\\Test\\corsavytest\\bin\\Debug\\corsavytest.PDB' -- 'c:\\Projects\\dotnet\\Test\\corsavytest\\bin\\Debug\\corsavytest.pdb: The process cannot access the file because it is being used by another process.",
task.Description,
"Task description is wrong.");
task = tasks[1];
Assert.AreEqual("C:\\Projects\\dotnet\\Test\\corsavytest\\corsavytest.build", task.FileName, "Task filename is incorrect.");
Assert.AreEqual(TaskType.Error, task.TaskType, "Should be an error task.");
Assert.AreEqual(47, task.Line, "Incorrect line number.");
Assert.AreEqual(5, task.Column, "Incorrect col number.");
Assert.AreEqual("External Program Failed: C:\\WINDOWS\\Microsoft.NET\\Framework\\v1.1.4322\\csc.exe (return code was 1)",
task.Description,
"Task description is wrong.");
}
[Test]
public void ParseVBError085()
{
TaskCollection tasks = NAntOutputParser.Parse(GetNAntVBOutput());
Assert.AreEqual(3, tasks.Count, "Should be three tasks.");
Task task = tasks[0];
Assert.AreEqual(String.Empty, task.FileName, "Task filename should be blank.");
Assert.AreEqual(TaskType.Error, task.TaskType, "Should be an error task.");
Assert.AreEqual(0, task.Line, "Should be line number 0.");
Assert.AreEqual(0, task.Column, "Should be col number 0");
Assert.AreEqual("Unable to write to output file 'C:\\Projects\\dotnet\\test\\corsavyvbtest\\bin\\Debug\\corsavyvbtest.exe': The process cannot access the file because it is being used by another process. (BC31019)",
task.Description,
"Task description is wrong.");
task = tasks[1];
Assert.AreEqual(String.Empty, task.FileName, "Task filename should be blank.");
Assert.AreEqual(TaskType.Error, task.TaskType, "Should be an error task.");
Assert.AreEqual(0, task.Line, "Should be line number 0.");
Assert.AreEqual(0, task.Column, "Should be col number 0");
Assert.AreEqual("Unable to write to output file 'C:\\Projects\\dotnet\\test\\corsavyvbtest\\bin\\Debug\\corsavyvbtest.pdb': Access is denied. (BC31019)",
task.Description,
"Task description is wrong.");
task = tasks[2];
Assert.AreEqual("C:\\Projects\\dotnet\\test\\corsavyvbtest\\corsavyvbtest.build", task.FileName, "Task filename is incorrect.");
Assert.AreEqual(TaskType.Error, task.TaskType, "Should be an error task.");
Assert.AreEqual(47, task.Line, "Incorrect line number.");
Assert.AreEqual(5, task.Column, "Incorrect col number.");
Assert.AreEqual("External Program Failed: C:\\WINDOWS\\Microsoft.NET\\Framework\\v1.1.4322\\vbc.exe (return code was 1)",
task.Description,
"Task description is wrong.");
}
string GetNAntCscOutput()
{
return "Buildfile: file:///C:/Projects/dotnet/Test/corsavytest/corsavytest.build\r\n" +
"Target(s) specified: build \r\n" +
"\r\n" +
"\r\n" +
"init.debug:\r\n" +
"\r\n" +
"\r\n" +
"gacreferences.debug:\r\n" +
"\r\n" +
"\r\n" +
"build.debug:\r\n" +
"\r\n" +
" [csc] Compiling 3 files to 'C:\\Projects\\dotnet\\Test\\corsavytest\\bin\\Debug\\corsavytest.exe'.\r\n" +
" [csc] fatal error CS0042: Unexpected error creating debug information file 'c:\\Projects\\dotnet\\Test\\corsavytest\\bin\\Debug\\corsavytest.PDB' -- 'c:\\Projects\\dotnet\\Test\\corsavytest\\bin\\Debug\\corsavytest.pdb: The process cannot access the file because it is being used by another process.\r\n" +
" [csc] \r\n" +
" [csc] \r\n" +
"\r\n" +
"BUILD FAILED\r\n" +
"\r\n" +
"C:\\Projects\\dotnet\\Test\\corsavytest\\corsavytest.build(48,6):\r\n" +
"External Program Failed: C:\\WINDOWS\\Microsoft.NET\\Framework\\v1.1.4322\\csc.exe (return code was 1)\r\n" +
"\r\n" +
"Total time: 0.3 seconds.\r\n" +
"";
}
string GetNAntVBOutput()
{
return "Buildfile: file:///C:/Projects/dotnet/test/corsavyvbtest/corsavyvbtest.build\r\n" +
"Target(s) specified: build \r\n" +
"\r\n" +
"\r\n" +
"init.debug:\r\n" +
"\r\n" +
"\r\n" +
"gacreferences.debug:\r\n" +
"\r\n" +
"\r\n" +
"build.debug:\r\n" +
"\r\n" +
" [vbc] Compiling 2 files to 'C:\\Projects\\dotnet\\test\\corsavyvbtest\\bin\\Debug\\corsavyvbtest.exe'.\r\n" +
" [vbc] vbc : error BC31019: Unable to write to output file 'C:\\Projects\\dotnet\\test\\corsavyvbtest\\bin\\Debug\\corsavyvbtest.exe': The process cannot access the file because it is being used by another process. \r\n" +
" [vbc] vbc : error BC31019: Unable to write to output file 'C:\\Projects\\dotnet\\test\\corsavyvbtest\\bin\\Debug\\corsavyvbtest.pdb': Access is denied. \r\n" +
"\r\n" +
"BUILD FAILED - 0 non-fatal error(s), 1 warning(s)\r\n" +
"\r\n" +
"C:\\Projects\\dotnet\\test\\corsavyvbtest\\corsavyvbtest.build(48,6):\r\n" +
"External Program Failed: C:\\WINDOWS\\Microsoft.NET\\Framework\\v1.1.4322\\vbc.exe (return code was 1)\r\n" +
"\r\n" +
"Total time: 0.4 seconds.\r\n" +
"";
}
}
}

42
src/AddIns/Misc/NAntAddIn/Test/InvalidNAntBuildFileTestFixture.cs

@ -1,42 +0,0 @@ @@ -1,42 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using ICSharpCode.NAntAddIn;
using NUnit.Framework;
using System;
using System.IO;
using System.Xml;
namespace ICSharpCode.NAntAddIn.Tests
{
/// <summary>
/// Tests the <see cref="NAntBuildFile"/> class.
/// </summary>
[TestFixture]
public class InvalidNAntBuildFileTestFixture
{
NAntBuildFile buildFile;
[Test]
public void ReadFile()
{
StringReader reader = new StringReader("<project>");
buildFile = new NAntBuildFile(reader);
Assert.IsTrue(buildFile.HasError);
NAntBuildFileError error = buildFile.Error;
Assert.AreEqual("Unexpected end of file has occurred. The following elements are not closed: project. Line 1, position 10.",
error.Message,
"Error message is incorrect.");
Assert.AreEqual(0, error.Line, "Error's line number is incorrect.");
Assert.AreEqual(9, error.Column, "Error's column number is incorrect.");
}
}
}

56
src/AddIns/Misc/NAntAddIn/Test/InvalidXmlNAntOutputTestFixture.cs

@ -1,56 +0,0 @@ @@ -1,56 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using ICSharpCode.SharpDevelop;
using NUnit.Framework;
namespace ICSharpCode.NAntAddIn.Tests
{
/// <summary>
/// Tests that the NAnt text output indicating the build file xml is
/// invalid is parsed correctly.</summary>
[TestFixture]
public class InvalidXmlNAntOutputTestFixture
{
[Test]
public void Parse085()
{
TaskCollection tasks = NAntOutputParser.Parse(GetNAntOutput());
Assert.AreEqual(1, tasks.Count, "Should be one task.");
Task task = tasks[0];
Assert.AreEqual(@"C:\Projects\foo\foo.build", task.FileName, "Task filename is incorrect.");
Assert.AreEqual(6, task.Line, "Task line is incorrect.");
Assert.AreEqual(4, task.Column, "Task column is incorrect.");
Assert.AreEqual(TaskType.Error, task.TaskType, "Should be error task.");
string description = "Error loading buildfile.\r\n The 'ifnot1' start tag on line '5' doesn't match the end tag of 'ifnot' in file 'file:///C:/Projects/foo/foo.build'. Line 7, position 5.";
Assert.AreEqual(description,
task.Description,
"Task description is wrong.");
}
/// <summary>
/// Gets NAnt output for an invalid xml in a 0.85 build file.</summary>
string GetNAntOutput()
{
return "\r\n" +
"BUILD FAILED\r\n" +
"\r\n" +
"C:\\Projects\\foo\\foo.build(7,5):\r\n" +
"Error loading buildfile.\r\n" +
" The 'ifnot1' start tag on line '5' doesn't match the end tag of 'ifnot' in file 'file:///C:/Projects/foo/foo.build'. Line 7, position 5.\r\n" +
"\r\n" +
"\r\n" +
"For more information regarding the cause of the build failure, run the build again in debug mode.\r\n" +
"\r\n" +
"Try 'nant -help' for more information";
}
}
}

76
src/AddIns/Misc/NAntAddIn/Test/NAntAddIn.Tests.csproj

@ -1,76 +0,0 @@ @@ -1,76 +0,0 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{13AB8351-39E5-4F9D-A59C-B30D60CF6B8C}</ProjectGuid>
<RootNamespace>NAntAddIn.Tests</RootNamespace>
<AssemblyName>NAntAddIn.Tests</AssemblyName>
<OutputType>Library</OutputType>
<WarningLevel>4</WarningLevel>
<NoStdLib>False</NoStdLib>
<NoConfig>False</NoConfig>
<RunPostBuildEvent>OnSuccessfulBuild</RunPostBuildEvent>
<DebugType>Full</DebugType>
<RegisterForComInterop>False</RegisterForComInterop>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<BaseAddress>4194304</BaseAddress>
<PlatformTarget>AnyCPU</PlatformTarget>
<FileAlignment>4096</FileAlignment>
<OutputPath>..\..\..\..\..\bin\UnitTests\</OutputPath>
<DebugSymbols>true</DebugSymbols>
<Optimize>False</Optimize>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
<CheckForOverflowUnderflow>True</CheckForOverflowUnderflow>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="System.Configuration" />
<Reference Include="nunit.framework">
<HintPath>..\..\..\..\Tools\NUnit\nunit.framework.dll</HintPath>
<SpecificVersion>False</SpecificVersion>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="AssemblyInfo.cs" />
<Compile Include="ReadNAntBuildFileTestFixture.cs" />
<Compile Include="InvalidNAntBuildFileTestFixture.cs" />
<Compile Include="InvalidXmlNAntOutputTestFixture.cs" />
<Compile Include="CscNAntOutputTestFixture.cs" />
<Compile Include="TargetDoesNotExistNAntOutputTestFixture.cs" />
<Compile Include="NAntErrorAndWarningOutputTestFixture.cs" />
<Compile Include="VBErrorNAntOutputTestFixture.cs" />
<Compile Include="FatalErrorNAntOutputTestFixture.cs" />
<Compile Include="ReadOnlyPropertyNAntOutputTestFixture.cs" />
<Compile Include="NonFatalErrorNAntOutputTestFixture.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\..\Main\Base\Project\ICSharpCode.SharpDevelop.csproj">
<Project>{2748AD25-9C63-4E12-877B-4DCE96FBED54}</Project>
<Name>ICSharpCode.SharpDevelop</Name>
<Private>True</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Main\Core\Project\ICSharpCode.Core.csproj">
<Project>{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}</Project>
<Name>ICSharpCode.Core</Name>
<Private>True</Private>
</ProjectReference>
<ProjectReference Include="..\Project\NAntAddIn.csproj">
<Project>{1DB3CAD2-38E8-4C5E-8E1B-0E37B1A5C006}</Project>
<Name>NAntAddIn</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" />
</Project>

1
src/AddIns/Misc/NAntAddIn/Test/NAntAddIn.Tests.csproj.user

@ -1 +0,0 @@ @@ -1 +0,0 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />

71
src/AddIns/Misc/NAntAddIn/Test/NAntErrorAndWarningOutputTestFixture.cs

@ -1,71 +0,0 @@ @@ -1,71 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using ICSharpCode.SharpDevelop;
using NUnit.Framework;
namespace ICSharpCode.NAntAddIn.Tests
{
/// <summary>
/// Tests that the NAnt errors and warnings are parsed correctly.
/// </summary>
[TestFixture]
public class NAntErrorAndWarningOutputTestFixture
{
[Test]
public void Parse085()
{
TaskCollection tasks = NAntOutputParser.Parse(GetNAntOutput());
Assert.AreEqual(2, tasks.Count, "Should be two tasks.");
Task task = tasks[0];
Assert.AreEqual("C:\\Projects\\dotnet\\Test\\corsavytest\\corsavytest.build", task.FileName, "Task filename is incorrect.");
Assert.AreEqual(TaskType.Warning, task.TaskType, "Should be a warning task.");
Assert.AreEqual(4, task.Line, "Incorrect line number.");
Assert.AreEqual(3, task.Column, "Incorrect col number.");
Assert.AreEqual("Attribute 'propertyexists' for <ifnot ... /> is deprecated. Use <if test=\"${property::exists('propertyname')}\"> instead.",
task.Description,
"Task description is wrong.");
task = tasks[1];
Assert.AreEqual("C:\\Projects\\dotnet\\Test\\corsavytest\\corsavytest.build", task.FileName, "Task filename is incorrect.");
Assert.AreEqual(TaskType.Error, task.TaskType, "Should be an error task.");
Assert.AreEqual(47, task.Line, "Incorrect line number.");
Assert.AreEqual(5, task.Column, "Incorrect col number.");
Assert.AreEqual("An empty string is not a valid value for attribute 'win32icon' of <csc ... />.",
task.Description,
"Task description is wrong.");
}
string GetNAntOutput()
{
return "Buildfile: file:///C:/Projects/dotnet/Test/corsavytest/corsavytest.build\r\n" +
"Target(s) specified: build \r\n" +
"\r\n" +
" [ifnot] C:\\Projects\\dotnet\\Test\\corsavytest\\corsavytest.build(5,4): Attribute 'propertyexists' for <ifnot ... /> is deprecated. Use <if test=\"${property::exists('propertyname')}\"> instead.\r\n" +
"\r\n" +
"init.debug:\r\n" +
"\r\n" +
"\r\n" +
"gacreferences.debug:\r\n" +
"\r\n" +
"\r\n" +
"build.debug:\r\n" +
"\r\n" +
"\r\n" +
"BUILD FAILED - 0 non-fatal error(s), 1 warning(s)\r\n" +
"\r\n" +
"C:\\Projects\\dotnet\\Test\\corsavytest\\corsavytest.build(48,6):\r\n" +
"An empty string is not a valid value for attribute 'win32icon' of <csc ... />.\r\n" +
"\r\n" +
"Total time: 0.1 seconds.";
}
}
}

57
src/AddIns/Misc/NAntAddIn/Test/NonFatalErrorNAntOutputTestFixture.cs

@ -1,57 +0,0 @@ @@ -1,57 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using NUnit.Framework;
using ICSharpCode.NAntAddIn;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using System;
namespace ICSharpCode.NAntAddIn.Tests
{
[TestFixture]
public class NonFatalErrorNAntOutputTestFixture
{
[Test]
public void Parse085()
{
TaskCollection tasks = NAntOutputParser.Parse(GetNAntOutput());
Assert.AreEqual(1, tasks.Count, "Should be one task.");
Task task = tasks[0];
Assert.AreEqual("C:\\Projects\\dotnet\\Corsavy\\SharpDevelop\\src\\StandardAddIn.include", task.FileName, "Task filename is incorrect.");
Assert.AreEqual(TaskType.Error, task.TaskType, "Should be a warning task.");
Assert.AreEqual(93, task.Line, "Incorrect line number.");
Assert.AreEqual(4, task.Column, "Incorrect col number.");
Assert.AreEqual("Cannot delete directory 'C:\\Projects\\dotnet\\Corsavy\\SharpDevelop\\AddIns\\AddIns\\Misc\\Debugger.AddIn'. The directory does not exist.",
task.Description,
"Task description is wrong.");
}
string GetNAntOutput()
{
return "[nant] C:\\Projects\\dotnet\\Corsavy\\SharpDevelop\\src\\AddIns\\Misc\\Debugger\\Debugger.Core\\Debugger.Core.build clean\r\n" +
" Buildfile: file:///C:/Projects/dotnet/Corsavy/SharpDevelop/src/AddIns/Misc/Debugger/Debugger.Core/Debugger.Core.build\r\n" +
" Target(s) specified: clean \r\n" +
" \r\n" +
" \r\n" +
" clean:\r\n" +
" \r\n" +
" \r\n" +
" SetProperties:\r\n" +
" \r\n" +
" [delete] C:\\Projects\\dotnet\\Corsavy\\SharpDevelop\\src\\StandardAddIn.include(94,5):\r\n" +
" [delete] Cannot delete directory 'C:\\Projects\\dotnet\\Corsavy\\SharpDevelop\\AddIns\\AddIns\\Misc\\Debugger.AddIn'. The directory does not exist.\r\n" +
" \r\n" +
" BUILD SUCCEEDED - 1 non-fatal error(s), 0 warning(s)\r\n" +
" \r\n" +
" Total time: 0.3 seconds.";
}
}
}

113
src/AddIns/Misc/NAntAddIn/Test/ReadNAntBuildFileTestFixture.cs

@ -1,113 +0,0 @@ @@ -1,113 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using ICSharpCode.NAntAddIn;
using NUnit.Framework;
using System;
using System.IO;
namespace ICSharpCode.NAntAddIn.Tests
{
/// <summary>
/// Tests the <see cref="NAntBuildFile"/> class.
/// </summary>
[TestFixture]
public class ReadNAntBuildFileTestFixture
{
NAntBuildFile buildFile;
[SetUp]
public void Init()
{
StringReader reader = new StringReader(GetBuildFileXml());
buildFile = new NAntBuildFile(reader);
}
[Test]
public void ProjectName()
{
Assert.AreEqual("Hello World", buildFile.Name, "Project name is wrong.");
}
[Test]
public void DefaultTarget()
{
// Check the name.
Assert.IsNotNull(buildFile.DefaultTarget, "Should have a default target.");
Assert.AreEqual("test", buildFile.DefaultTarget.Name, "Default target read from build file is wrong.");
}
[Test]
public void Targets()
{
Assert.AreEqual(3, buildFile.Targets.Count, "Should have 3 targets.");
NAntBuildTarget target = buildFile.Targets[0];
Assert.AreEqual("clean", target.Name, "Target name should be 'clean'.");
Assert.IsFalse(target.IsDefault, "Clean target should not have default target flag set.");
Assert.AreEqual(4, target.Line, "Clean target line number is incorrect.");
Assert.AreEqual(5, target.Column, "Clean target column number is incorrect.");
target = buildFile.Targets[1];
Assert.IsFalse(target.IsDefault, "Build target should not have default target flag set.");
Assert.AreEqual("build", target.Name, "Target name should be 'build'.");
Assert.AreEqual(13, target.Line, "Build target line number is incorrect.");
Assert.AreEqual(5, target.Column, "Build target column number is incorrect.");
target = buildFile.Targets[2];
Assert.AreEqual("test", target.Name, "Target name should be 'test'.");
Assert.IsTrue(target.IsDefault, "Test target should have default target flag set.");
Assert.AreEqual(31, target.Line, "Test target line number is incorrect.");
Assert.AreEqual(5, target.Column, "Test target column number is incorrect.");
}
/// <summary>
/// Gets the build file xml that will be used in this
/// test fixture.
/// </summary>
string GetBuildFileXml()
{
return "<project name=\"Hello World\" default=\"test\">\r\n" +
" <property name=\"basename\" value=\"HelloWorld\"/>\r\n" +
" <property name=\"debug\" value=\"true\"/>\r\n" +
"\r\n" +
" <target name=\"clean\">\r\n" +
" <delete>\r\n" +
" <fileset>\r\n" +
" <includes name=\"${basename}-??.exe\"/>\r\n" +
" <includes name=\"${basename}-??.pdb\"/>\r\n" +
" </fileset>\r\n" +
" </delete>\r\n" +
" </target>\r\n" +
"\r\n" +
" <target name=\"build\">\r\n" +
" <csc target=\"exe\" output=\"${basename}-cs.exe\" debug=\"${debug}\">\r\n" +
" <sources>\r\n" +
" <includes name=\"${basename}.cs\"/>\r\n" +
" </sources>\r\n" +
" </csc>\r\n" +
" <jsc target=\"exe\" output=\"${basename}-js.exe\" debug=\"${debug}\">\r\n" +
" <sources>\r\n" +
" <includes name=\"${basename}.js\"/>\r\n" +
" </sources>\r\n" +
" </jsc>\r\n" +
" <vbc target=\"exe\" output=\"${basename}-vb.exe\" debug=\"${debug}\">\r\n" +
" <sources>\r\n" +
" <includes name=\"${basename}.vb\"/>\r\n" +
" </sources>\r\n" +
" </vbc>\r\n" +
" </target>\r\n" +
"\r\n" +
" <target name=\"test\" depends=\"build\">\r\n" +
" <exec program=\"${basename}-cs.exe\" basedir=\".\"/>\r\n" +
" <exec program=\"${basename}-js.exe\" basedir=\".\"/>\r\n" +
" <exec program=\"${basename}-vb.exe\" basedir=\".\"/>\r\n" +
" </target>\r\n" +
"</project>";
}
}
}

48
src/AddIns/Misc/NAntAddIn/Test/ReadOnlyPropertyNAntOutputTestFixture.cs

@ -1,48 +0,0 @@ @@ -1,48 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using ICSharpCode.SharpDevelop;
using NUnit.Framework;
namespace ICSharpCode.NAntAddIn.Tests
{
[TestFixture]
public class ReadOnlyPropertyNAntOutputTestFixture
{
[Test]
public void Parse085()
{
TaskCollection tasks = NAntOutputParser.Parse(GetNAntOutput());
Assert.AreEqual(1, tasks.Count, "Should be one task.");
Task task = tasks[0];
Assert.AreEqual(String.Empty, task.FileName, "Task filename is incorrect.");
Assert.AreEqual(TaskType.Warning, task.TaskType, "Should be a warning task.");
Assert.AreEqual(0, task.Line, "Incorrect line number.");
Assert.AreEqual(0, task.Column, "Incorrect col number.");
Assert.AreEqual("Read-only property \"debug\" cannot be overwritten.",
task.Description,
"Task description is wrong.");
}
string GetNAntOutput()
{
return "Buildfile: file:///C:/Projects/dotnet/Corsavy/SharpDevelop/src/SharpDevelop.build\r\n" +
"Target(s) specified: clean \r\n" +
"\r\n" +
" [property] Read-only property \"debug\" cannot be overwritten.\r\n" +
"\r\n" +
"clean:\r\n" +
"\r\n" +
"\r\n" +
"CallBuildfiles";
}
}
}

51
src/AddIns/Misc/NAntAddIn/Test/TargetDoesNotExistNAntOutputTestFixture.cs

@ -1,51 +0,0 @@ @@ -1,51 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using ICSharpCode.SharpDevelop;
using NUnit.Framework;
namespace ICSharpCode.NAntAddIn.Tests
{
/// <summary>
/// Tests that the "Target 'foo' does not exist" error is handled.
/// </summary>
[TestFixture]
public class TargetDoesNotExistNAntOutputTestFixture
{
[Test]
public void Parse085()
{
TaskCollection tasks = NAntOutputParser.Parse(GetNAntOutput());
Assert.AreEqual(1, tasks.Count, "Should be one task.");
Task task = tasks[0];
Assert.AreEqual(String.Empty, task.FileName, "Should not have any filename information.");
Assert.AreEqual(TaskType.Error, task.TaskType, "Should be an error task.");
Assert.AreEqual(0, task.Line, "Should be line number 0");
Assert.AreEqual(0, task.Column, "Should be col number 0");
Assert.AreEqual("Target 'abuild' does not exist in this project.",
task.Description,
"Task description is wrong.");
}
string GetNAntOutput()
{
return "Buildfile: file:///C:/Projects/dotnet/Test/corsavytest/corsavytest.build\r\n" +
"Target(s) specified: abuild \r\n" +
"\r\n" +
"\r\n" +
"BUILD FAILED\r\n" +
"\r\n" +
"Target 'abuild' does not exist in this project.\r\n" +
"\r\n" +
"Total time: 0.1 seconds.\r\n" +
"";
}
}
}

88
src/AddIns/Misc/NAntAddIn/Test/VBErrorNAntOutputTestFixture.cs

@ -1,88 +0,0 @@ @@ -1,88 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using NUnit.Framework;
using ICSharpCode.NAntAddIn;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using System;
namespace ICSharpCode.NAntAddIn.Tests
{
/// <summary>
/// Tests that VB errors are parsed correctly.
/// </summary>
[TestFixture]
public class VBErrorNAntOutputTestFixture
{
[Test]
public void Parse085()
{
TaskCollection tasks = NAntOutputParser.Parse(GetNAntOutput());
Assert.AreEqual(3, tasks.Count, "Should be three tasks.");
Task task = tasks[0];
Assert.AreEqual("C:\\Projects\\dotnet\\test\\corsavyvbtest\\corsavyvbtest.build", task.FileName, "Task filename is incorrect.");
Assert.AreEqual(TaskType.Warning, task.TaskType, "Should be a warning task.");
Assert.AreEqual(47, task.Line, "Incorrect line number.");
Assert.AreEqual(5, task.Column, "Incorrect col number.");
Assert.AreEqual("Attribute 'imports' for <vbc ... /> is deprecated. Use the <imports> element instead.",
task.Description,
"Task description is wrong.");
task = tasks[1];
Assert.AreEqual("C:\\Projects\\dotnet\\test\\corsavyvbtest\\MainForm.vb", task.FileName, "Task filename is incorrect.");
Assert.AreEqual(TaskType.Error, task.TaskType, "Should be an error task.");
Assert.AreEqual(13, task.Line, "Incorrect line number.");
Assert.AreEqual(0, task.Column, "Should be col number 0");
Assert.AreEqual("Syntax error. (BC30035)",
task.Description,
"Task description is wrong.");
task = tasks[2];
Assert.AreEqual("C:\\Projects\\dotnet\\test\\corsavyvbtest\\corsavyvbtest.build", task.FileName, "Task filename is incorrect.");
Assert.AreEqual(TaskType.Error, task.TaskType, "Should be an error task.");
Assert.AreEqual(47, task.Line, "Incorrect line number.");
Assert.AreEqual(5, task.Column, "Incorrect col number.");
Assert.AreEqual("External Program Failed: C:\\WINDOWS\\Microsoft.NET\\Framework\\v1.1.4322\\vbc.exe (return code was 1)",
task.Description,
"Task description is wrong.");
}
string GetNAntOutput()
{
return "Buildfile: file:///C:/Projects/dotnet/test/corsavyvbtest/corsavyvbtest.build\r\n" +
"Target(s) specified: build \r\n" +
"\r\n" +
"\r\n" +
"init.debug:\r\n" +
"\r\n" +
"\r\n" +
"gacreferences.debug:\r\n" +
"\r\n" +
"\r\n" +
"build.debug:\r\n" +
"\r\n" +
" [vbc] C:\\Projects\\dotnet\\test\\corsavyvbtest\\corsavyvbtest.build(48,6): Attribute 'imports' for <vbc ... /> is deprecated. Use the <imports> element instead.\r\n" +
" [vbc] Compiling 2 files to 'C:\\Projects\\dotnet\\test\\corsavyvbtest\\bin\\Debug\\corsavyvbtest.exe'.\r\n" +
" [vbc] C:\\Projects\\dotnet\\test\\corsavyvbtest\\MainForm.vb(14) : error BC30035: Syntax error.\r\n" +
" [vbc] \r\n" +
" [vbc] /\r\n" +
" [vbc] ~\r\n" +
"\r\n" +
"BUILD FAILED - 0 non-fatal error(s), 1 warning(s)\r\n" +
"\r\n" +
"C:\\Projects\\dotnet\\test\\corsavyvbtest\\corsavyvbtest.build(48,6):\r\n" +
"External Program Failed: C:\\WINDOWS\\Microsoft.NET\\Framework\\v1.1.4322\\vbc.exe (return code was 1)\r\n" +
"\r\n" +
"Total time: 0.3 seconds.\r\n" +
"\r\n";
}
}
}

6
src/SharpDevelop.Tests.sln

@ -20,10 +20,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BooBinding.Tests", "AddIns\ @@ -20,10 +20,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BooBinding.Tests", "AddIns\
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BooBinding", "AddIns\BackendBindings\Boo\BooBinding\Project\BooBinding.csproj", "{4AC2D5F1-F671-480C-A075-6BF62B3721B2}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NAntAddIn.Tests", "AddIns\Misc\NAntAddIn\Test\NAntAddIn.Tests.csproj", "{13AB8351-39E5-4F9D-A59C-B30D60CF6B8C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NAntAddIn", "AddIns\Misc\NAntAddIn\Project\NAntAddIn.csproj", "{1DB3CAD2-38E8-4C5E-8E1B-0E37B1A5C006}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTesting", "AddIns\Misc\UnitTesting\UnitTesting.csproj", "{1F261725-6318-4434-A1B1-6C70CE4CD324}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeCoverage", "AddIns\Misc\CodeCoverage\Project\CodeCoverage.csproj", "{08ce9972-283b-44f4-82fa-966f7dfa6b7a}"
@ -293,8 +289,6 @@ Global @@ -293,8 +289,6 @@ Global
{A5C0E8F8-9D04-46ED-91D6-1DEF1575313B} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{08ce9972-283b-44f4-82fa-966f7dfa6b7a} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{1F261725-6318-4434-A1B1-6C70CE4CD324} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{1DB3CAD2-38E8-4C5E-8E1B-0E37B1A5C006} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{13AB8351-39E5-4F9D-A59C-B30D60CF6B8C} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{4AC2D5F1-F671-480C-A075-6BF62B3721B2} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{6FA16499-896F-4C02-BB43-1AF5C6C7C713} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}

5
src/SharpDevelop.sln

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 9.00
# Visual Studio 2005
# SharpDevelop 2.1.0.2080
# SharpDevelop 3.0.0.2190
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AddIns", "AddIns", "{14A277EE-7DF1-4529-B639-7D1EF334C1C5}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
@ -90,8 +90,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PInvokeAddIn", "AddIns\Misc @@ -90,8 +90,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PInvokeAddIn", "AddIns\Misc
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddInManager", "AddIns\Misc\AddInManager\Project\AddInManager.csproj", "{F93E52FD-DA66-4CE5-A0CB-BCD902811122}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NAntAddIn", "AddIns\Misc\NAntAddIn\Project\NAntAddIn.csproj", "{1DB3CAD2-38E8-4C5E-8E1B-0E37B1A5C006}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HtmlHelp2", "AddIns\Misc\HtmlHelp2\Project\HtmlHelp2.csproj", "{918487B7-2153-4618-BBB3-344DBDDF2A2A}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Debugger", "Debugger", "{6604365C-C702-4C10-9BA8-637F1E3D4D0D}"
@ -434,7 +432,6 @@ Global @@ -434,7 +432,6 @@ Global
{D022A6CE-7438-41E8-AC64-F2DE18EC54C6} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{6604365C-C702-4C10-9BA8-637F1E3D4D0D} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{918487B7-2153-4618-BBB3-344DBDDF2A2A} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{1DB3CAD2-38E8-4C5E-8E1B-0E37B1A5C006} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{F93E52FD-DA66-4CE5-A0CB-BCD902811122} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{5EEB99CF-EA2B-4733-80A6-CE9192D68170} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{082DCD64-EE32-4151-A50F-E139CF754CC0} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}

Loading…
Cancel
Save