diff --git a/data/templates/file/VBNet/FileCategorySortOrder.xml b/data/templates/file/VBNet/FileCategorySortOrder.xml
new file mode 100644
index 0000000000..6b3a62d232
--- /dev/null
+++ b/data/templates/file/VBNet/FileCategorySortOrder.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/data/templates/file/VBNet/VBNet.Gtk.Window.xft b/data/templates/file/VBNet/VBNet.Gtk.Window.xft
new file mode 100644
index 0000000000..15489bcea0
--- /dev/null
+++ b/data/templates/file/VBNet/VBNet.Gtk.Window.xft
@@ -0,0 +1,39 @@
+
+
+
+
+
+ ${res:Templates.File.GtkSharpWindow.Description}
+
+
+
+
+
+
+
+
diff --git a/data/templates/project/VBNet/GtkProject.xpt b/data/templates/project/VBNet/GtkProject.xpt
new file mode 100644
index 0000000000..b7087ebb0e
--- /dev/null
+++ b/data/templates/project/VBNet/GtkProject.xpt
@@ -0,0 +1,107 @@
+
+
+
+
+
+ ${res:Templates.Project.GtkSharpProject.Name}
+ VBNet
+ Mono
+ VBNet.Project.Form
+ VBNet
+ ${res:Templates.Project.GtkSharpProject.Description}
+
+
+
+
+
+
+
+
+
+ ${ProjectName}
+
+
+
+
+
+
+ Mono v1.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+' 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):
+
+
+]]>
+
+
+
+
diff --git a/data/templates/project/VBNet/ProjectCategorySortOrder.xml b/data/templates/project/VBNet/ProjectCategorySortOrder.xml
new file mode 100644
index 0000000000..117d6a82d2
--- /dev/null
+++ b/data/templates/project/VBNet/ProjectCategorySortOrder.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Libraries/ICSharpCode.Build.Tasks/ICSharpCode.Build.Tasks.sln b/src/Libraries/ICSharpCode.Build.Tasks/ICSharpCode.Build.Tasks.sln
index 26da2d8060..bda7f92c70 100644
--- a/src/Libraries/ICSharpCode.Build.Tasks/ICSharpCode.Build.Tasks.sln
+++ b/src/Libraries/ICSharpCode.Build.Tasks/ICSharpCode.Build.Tasks.sln
@@ -1,8 +1,22 @@
Microsoft Visual Studio Solution File, Format Version 9.00
-# SharpDevelop 2.0.0.546
+# SharpDevelop 2.0.0.1116
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Build.Tasks", "Project\ICSharpCode.Build.Tasks.csproj", "{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Build.Tasks.Tests", "Test\ICSharpCode.Build.Tasks.Tests.csproj", "{B7C2A664-B454-4920-AC6E-318F5274B2EF}"
EndProject
Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {B7C2A664-B454-4920-AC6E-318F5274B2EF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B7C2A664-B454-4920-AC6E-318F5274B2EF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B7C2A664-B454-4920-AC6E-318F5274B2EF}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B7C2A664-B454-4920-AC6E-318F5274B2EF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4139CCF6-FB49-4A9D-B2CF-331E9EA3198D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4139CCF6-FB49-4A9D-B2CF-331E9EA3198D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4139CCF6-FB49-4A9D-B2CF-331E9EA3198D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4139CCF6-FB49-4A9D-B2CF-331E9EA3198D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ EndGlobalSection
EndGlobal
diff --git a/src/Libraries/ICSharpCode.Build.Tasks/Project/CompilerCommandLineArguments.cs b/src/Libraries/ICSharpCode.Build.Tasks/Project/CompilerCommandLineArguments.cs
index 57c05a3f0f..b24f97529c 100644
--- a/src/Libraries/ICSharpCode.Build.Tasks/Project/CompilerCommandLineArguments.cs
+++ b/src/Libraries/ICSharpCode.Build.Tasks/Project/CompilerCommandLineArguments.cs
@@ -9,16 +9,16 @@ using Microsoft.Build.Framework;
using Microsoft.Build.Tasks;
using Microsoft.Build.Utilities;
using System;
+using System.Globalization;
using System.Text;
using System.IO;
namespace ICSharpCode.Build.Tasks
{
public class CompilerCommandLineArguments : CommandLineBuilderExtension
- {
- public CompilerCommandLineArguments(MonoCompilerTask compilerTask)
+ {
+ public CompilerCommandLineArguments()
{
- GenerateCommandLineArguments(compilerTask);
}
public static bool IsNetModule(string fileName)
@@ -26,36 +26,28 @@ namespace ICSharpCode.Build.Tasks
return Path.GetExtension(fileName).ToLowerInvariant() == ".netmodule";
}
- void GenerateCommandLineArguments(MonoCompilerTask compilerTask)
+ public void AppendFileNameIfNotNull(string switchName, ITaskItem fileItem)
{
- AppendSwitchIfTrue("-noconfig", compilerTask.NoConfig);
- AppendSwitch("-warn:", compilerTask.WarningLevel.ToString());
- AppendFileNameIfNotNull("-out:", compilerTask.OutputAssembly);
- AppendTarget(compilerTask.TargetType);
- AppendSwitchWithoutParameterIfNotNull("-debug", compilerTask.DebugType);
- AppendSwitchIfTrue("-optimize", compilerTask.Optimize);
- AppendSwitchIfTrue("-nologo", compilerTask.NoLogo);
- AppendSwitchIfTrue("-unsafe", compilerTask.AllowUnsafeBlocks);
- AppendSwitchIfTrue("-nostdlib", compilerTask.NoStandardLib);
- AppendSwitchIfTrue("-checked", compilerTask.CheckForOverflowUnderflow);
- AppendSwitchIfTrue("-delaysign", compilerTask.DelaySign);
- AppendSwitchIfNotNull("-langversion:", compilerTask.LangVersion);
- AppendSwitchIfNotNull("-keycontainer:", compilerTask.KeyContainer);
- AppendSwitchIfNotNull("-keyfile:", compilerTask.KeyFile);
- AppendSwitchIfNotNull("-define:", compilerTask.DefineConstants);
- AppendSwitchIfTrue("-warnaserror", compilerTask.TreatWarningsAsErrors);
- AppendSwitchIfNotNull("-nowarn:", compilerTask.DisabledWarnings);
- AppendSwitchIfNotNull("-main:", compilerTask.MainEntryPoint);
- AppendFileNameIfNotNull("-doc:", compilerTask.DocumentationFile);
- AppendSwitchIfNotNull("-lib:", compilerTask.AdditionalLibPaths, ",");
- AppendReferencesIfNotNull(compilerTask.References);
- AppendResourcesIfNotNull(compilerTask.Resources);
- AppendFileNameIfNotNull("-win32res:", compilerTask.Win32Resource);
- AppendFileNameIfNotNull("-win32icon:", compilerTask.Win32Icon);
- AppendFileNamesIfNotNull(compilerTask.Sources, " ");
+ if (fileItem != null) {
+ AppendFileNameIfNotNull(switchName, fileItem.ItemSpec);
+ }
+ }
+
+ public void AppendTarget(string targetType)
+ {
+ if (targetType != null) {
+ AppendSwitch("-target:", targetType.ToLowerInvariant());
+ }
}
- void AppendReferencesIfNotNull(ITaskItem[] references)
+ public void AppendSwitchIfTrue(string switchName, bool parameter)
+ {
+ if (parameter) {
+ AppendSwitch(switchName);
+ }
+ }
+
+ public void AppendReferencesIfNotNull(ITaskItem[] references)
{
if (references == null) {
return;
@@ -71,44 +63,23 @@ namespace ICSharpCode.Build.Tasks
}
}
- void AppendResourcesIfNotNull(ITaskItem[] resources)
+ public void AppendItemsIfNotNull(string switchName, ITaskItem[] items)
{
- if (resources == null) {
+ if (items == null) {
return;
}
- foreach (ITaskItem resource in resources) {
- AppendFileNameIfNotNull("-resource:", resource);
- }
- }
-
- void AppendSwitchWithoutParameterIfNotNull(string switchName, string parameter)
- {
- if (parameter != null && parameter.Trim().Length > 0) {
- AppendSwitch(switchName);
- }
- }
-
- void AppendSwitchIfTrue(string switchName, bool parameter)
- {
- if (parameter) {
- AppendSwitch(switchName);
+ foreach (ITaskItem item in items) {
+ AppendFileNameIfNotNull(switchName, item);
}
}
- void AppendSwitch(string switchName, string parameter)
+ public void AppendSwitch(string switchName, string parameter)
{
AppendSwitchIfNotNull(switchName, parameter);
}
- void AppendFileNameIfNotNull(string switchName, ITaskItem fileItem)
- {
- if (fileItem != null) {
- AppendFileNameIfNotNull(switchName, fileItem.ItemSpec);
- }
- }
-
- void AppendFileNameIfNotNull(string switchName, string fileName)
+ public void AppendFileNameIfNotNull(string switchName, string fileName)
{
if (fileName != null) {
AppendSpaceIfNotEmpty();
@@ -117,10 +88,13 @@ namespace ICSharpCode.Build.Tasks
}
}
- void AppendTarget(string targetType)
+ ///
+ /// Appends and lower cases the switch's value if it is not null.
+ ///
+ public void AppendLowerCaseSwitchIfNotNull(string switchName, string parameter)
{
- if (targetType != null) {
- AppendSwitch("-target:", targetType.ToLowerInvariant());
+ if (parameter != null) {
+ AppendSwitch(switchName, parameter.ToLower(CultureInfo.InvariantCulture));
}
}
}
diff --git a/src/Libraries/ICSharpCode.Build.Tasks/Project/Gmcs.cs b/src/Libraries/ICSharpCode.Build.Tasks/Project/Gmcs.cs
index a6221b26a7..d246d0bffd 100644
--- a/src/Libraries/ICSharpCode.Build.Tasks/Project/Gmcs.cs
+++ b/src/Libraries/ICSharpCode.Build.Tasks/Project/Gmcs.cs
@@ -13,7 +13,7 @@ namespace ICSharpCode.Build.Tasks
///
/// MSBuild task for Mono's GMCS.
///
- public class Gmcs : MonoCompilerTask
+ public class Gmcs : MonoCSharpCompilerTask
{
protected override string ToolName {
get {
diff --git a/src/Libraries/ICSharpCode.Build.Tasks/Project/ICSharpCode.Build.Tasks.csproj b/src/Libraries/ICSharpCode.Build.Tasks/Project/ICSharpCode.Build.Tasks.csproj
index d8b483cc05..6f9b8685da 100644
--- a/src/Libraries/ICSharpCode.Build.Tasks/Project/ICSharpCode.Build.Tasks.csproj
+++ b/src/Libraries/ICSharpCode.Build.Tasks/Project/ICSharpCode.Build.Tasks.csproj
@@ -42,7 +42,7 @@
-
+
Always
@@ -61,6 +61,12 @@
Always
+
+
+ Always
+
+
+
diff --git a/src/Libraries/ICSharpCode.Build.Tasks/Project/ICompilerResultsParser.cs b/src/Libraries/ICSharpCode.Build.Tasks/Project/ICompilerResultsParser.cs
index bb13d6e612..8714a4ad96 100644
--- a/src/Libraries/ICSharpCode.Build.Tasks/Project/ICompilerResultsParser.cs
+++ b/src/Libraries/ICSharpCode.Build.Tasks/Project/ICompilerResultsParser.cs
@@ -12,6 +12,6 @@ namespace ICSharpCode.Build.Tasks
{
public interface ICompilerResultsParser
{
- CompilerResults Parse(TempFileCollection tempFiles, string fileName);
+ CompilerResults Parse(TempFileCollection tempFiles, string outputFileName, string errorFileName);
}
}
diff --git a/src/Libraries/ICSharpCode.Build.Tasks/Project/Mbas.cs b/src/Libraries/ICSharpCode.Build.Tasks/Project/Mbas.cs
new file mode 100644
index 0000000000..b9e17cd4ff
--- /dev/null
+++ b/src/Libraries/ICSharpCode.Build.Tasks/Project/Mbas.cs
@@ -0,0 +1,142 @@
+//
+//
+//
+//
+// $Revision$
+//
+
+using Microsoft.Build.Framework;
+using Microsoft.Build.Utilities;
+using System;
+using System.CodeDom.Compiler;
+
+namespace ICSharpCode.Build.Tasks
+{
+ ///
+ /// MSBuild task for Mono's Visual Basic compiler Mbas.
+ ///
+ public class Mbas : MonoCompilerTask
+ {
+ ITaskItem[] imports;
+ string optionCompare;
+ bool optionExplicit;
+ bool optionStrict;
+ bool noWarnings;
+ bool removeIntegerChecks;
+ string rootNamespace;
+
+ public ITaskItem[] Imports {
+ get {
+ return imports;
+ }
+ set {
+ imports = value;
+ }
+ }
+
+ public string OptionCompare {
+ get {
+ return optionCompare;
+ }
+ set {
+ optionCompare = value;
+ }
+ }
+
+ public bool OptionExplicit {
+ get {
+ return optionExplicit;
+ }
+ set {
+ optionExplicit = value;
+ }
+ }
+
+ public bool OptionStrict {
+ get {
+ return optionStrict;
+ }
+ set {
+ optionStrict = value;
+ }
+ }
+
+ public bool NoWarnings {
+ get {
+ return noWarnings;
+ }
+ set {
+ noWarnings = value;
+ }
+ }
+
+ public bool RemoveIntegerChecks {
+ get {
+ return removeIntegerChecks;
+ }
+ set {
+ removeIntegerChecks = value;
+ }
+ }
+
+ public string RootNamespace {
+ get {
+ return rootNamespace;
+ }
+ set {
+ rootNamespace = value;
+ }
+ }
+
+ ///
+ /// Command line arguments that will be passed to the compiler.
+ ///
+ protected override string GenerateCommandLineArguments()
+ {
+ CompilerCommandLineArguments args = new CompilerCommandLineArguments();
+
+ args.AppendFileNameIfNotNull("-out:", OutputAssembly);
+ if (IsWarningLevelSet) {
+ args.AppendSwitch("-wlevel:", WarningLevel.ToString());
+ }
+ args.AppendTarget(TargetType);
+ args.AppendSwitchIfTrue("-debug", EmitDebugInformation);
+ args.AppendLowerCaseSwitchIfNotNull("-debug:", DebugType);
+ args.AppendSwitchIfTrue("-nologo", NoLogo);
+ args.AppendSwitchIfTrue("-nowarn", noWarnings);
+ args.AppendSwitchIfTrue("-unsafe", AllowUnsafeBlocks);
+ args.AppendSwitchIfTrue("-nostdlib", NoStandardLib);
+ args.AppendSwitchIfNotNull("-define:", DefineConstants);
+ args.AppendSwitchIfNotNull("-main:", MainEntryPoint);
+ args.AppendSwitchIfNotNull("-lib:", AdditionalLibPaths, ",");
+ args.AppendSwitchIfNotNull("-ignorewarn:", DisabledWarnings);
+ args.AppendSwitchIfTrue("-optionstrict", OptionStrict);
+ args.AppendSwitchIfTrue("-optionexplicit", OptionExplicit);
+ args.AppendSwitchIfTrue("-warnaserror", TreatWarningsAsErrors);
+ args.AppendSwitchIfTrue("-removeintchecks", removeIntegerChecks);
+ args.AppendSwitchIfNotNull("-rootnamespace:", rootNamespace);
+ args.AppendItemsIfNotNull("-imports:", Imports);
+ args.AppendReferencesIfNotNull(References);
+ args.AppendItemsIfNotNull("-resource:", Resources);
+ args.AppendFileNamesIfNotNull(Sources, " ");
+
+ return args.ToString();
+ }
+
+ protected override ICompilerResultsParser GetCompilerResultsParser()
+ {
+ return new MonoBasicCompilerResultsParser();
+ }
+
+ protected override string ToolName {
+ get {
+ return "Mbas.exe";
+ }
+ }
+
+ protected override string GenerateFullPathToTool()
+ {
+ return MonoToolLocationHelper.GetPathToTool(ToolName);
+ }
+ }
+}
diff --git a/src/Libraries/ICSharpCode.Build.Tasks/Project/Mcs.cs b/src/Libraries/ICSharpCode.Build.Tasks/Project/Mcs.cs
index 39ef1f539e..beb5a485ee 100644
--- a/src/Libraries/ICSharpCode.Build.Tasks/Project/Mcs.cs
+++ b/src/Libraries/ICSharpCode.Build.Tasks/Project/Mcs.cs
@@ -13,7 +13,7 @@ namespace ICSharpCode.Build.Tasks
///
/// MSBuild task for Mono's MCS.
///
- public class Mcs : MonoCompilerTask
+ public class Mcs : MonoCSharpCompilerTask
{
protected override string ToolName {
get {
diff --git a/src/Libraries/ICSharpCode.Build.Tasks/Project/MonoBasicCompilerResultsParser.cs b/src/Libraries/ICSharpCode.Build.Tasks/Project/MonoBasicCompilerResultsParser.cs
new file mode 100644
index 0000000000..a76e4f5474
--- /dev/null
+++ b/src/Libraries/ICSharpCode.Build.Tasks/Project/MonoBasicCompilerResultsParser.cs
@@ -0,0 +1,65 @@
+//
+//
+//
+//
+// $Revision$
+//
+
+using System;
+using System.CodeDom.Compiler;
+using System.IO;
+using System.Text;
+using System.Text.RegularExpressions;
+
+namespace ICSharpCode.Build.Tasks
+{
+ public class MonoBasicCompilerResultsParser : ICompilerResultsParser
+ {
+ public const string NormalErrorPattern = @"(?.*)\((?\d+),(?\d+)\)\s+(?\w+)\s+(?[\d\w]+):\s+(?.*)";
+
+ Regex normalError = new Regex(NormalErrorPattern, RegexOptions.Compiled);
+
+ public MonoBasicCompilerResultsParser()
+ {
+ }
+
+ public CompilerResults Parse(TempFileCollection tempFiles, string outputFileName, string errorFileName)
+ {
+ CompilerResults results = new CompilerResults(tempFiles);
+
+ StringBuilder compilerOutput = new StringBuilder();
+ StreamReader resultsReader = File.OpenText(outputFileName);
+
+ while (true) {
+ string curLine = resultsReader.ReadLine();
+ compilerOutput.Append(curLine);
+ compilerOutput.Append('\n');
+ if (curLine == null) {
+ break;
+ }
+ curLine = curLine.Trim();
+ if (curLine.Length == 0) {
+ continue;
+ }
+
+ CompilerError error = new CompilerError();
+
+ // try to match standard mono errors
+ Match match = normalError.Match(curLine);
+ if (match.Success) {
+ error.Column = Int32.Parse(match.Result("${column}"));
+ error.Line = Int32.Parse(match.Result("${line}"));
+ error.FileName = Path.GetFullPath(match.Result("${file}"));
+ error.IsWarning = match.Result("${error}") == "warning";
+ error.ErrorNumber = match.Result("${number}");
+ error.ErrorText = match.Result("${message}");
+
+ results.Errors.Add(error);
+ }
+ }
+ resultsReader.Close();
+
+ return results;
+ }
+ }
+}
diff --git a/src/Libraries/ICSharpCode.Build.Tasks/Project/CompilerResultsParser.cs b/src/Libraries/ICSharpCode.Build.Tasks/Project/MonoCSharpCompilerResultsParser.cs
similarity index 90%
rename from src/Libraries/ICSharpCode.Build.Tasks/Project/CompilerResultsParser.cs
rename to src/Libraries/ICSharpCode.Build.Tasks/Project/MonoCSharpCompilerResultsParser.cs
index d7597cba67..fdefcfb638 100644
--- a/src/Libraries/ICSharpCode.Build.Tasks/Project/CompilerResultsParser.cs
+++ b/src/Libraries/ICSharpCode.Build.Tasks/Project/MonoCSharpCompilerResultsParser.cs
@@ -13,7 +13,7 @@ using System.Text.RegularExpressions;
namespace ICSharpCode.Build.Tasks
{
- public class CompilerResultsParser : ICompilerResultsParser
+ public class MonoCSharpCompilerResultsParser : ICompilerResultsParser
{
public const string NormalErrorPattern = @"(?.*)\((?\d+),(?\d+)\):\s+(?\w+)\s+(?[\d\w]+):\s+(?.*)";
public const string GeneralErrorPattern = @"(?.+?)\s+(?[\d\w]+?):\s+(?.*)";
@@ -21,16 +21,16 @@ namespace ICSharpCode.Build.Tasks
Regex normalError = new Regex(NormalErrorPattern, RegexOptions.Compiled);
Regex generalError = new Regex(GeneralErrorPattern, RegexOptions.Compiled);
- public CompilerResultsParser()
+ public MonoCSharpCompilerResultsParser()
{
}
- public CompilerResults Parse(TempFileCollection tempFiles, string fileName)
+ public CompilerResults Parse(TempFileCollection tempFiles, string outputFileName, string errorFileName)
{
CompilerResults results = new CompilerResults(tempFiles);
StringBuilder compilerOutput = new StringBuilder();
- StreamReader resultsReader = File.OpenText(fileName);
+ StreamReader resultsReader = File.OpenText(errorFileName);
while (true) {
string curLine = resultsReader.ReadLine();
diff --git a/src/Libraries/ICSharpCode.Build.Tasks/Project/MonoCSharpCompilerTask.cs b/src/Libraries/ICSharpCode.Build.Tasks/Project/MonoCSharpCompilerTask.cs
new file mode 100644
index 0000000000..aa2e535067
--- /dev/null
+++ b/src/Libraries/ICSharpCode.Build.Tasks/Project/MonoCSharpCompilerTask.cs
@@ -0,0 +1,158 @@
+//
+//
+//
+//
+// $Revision$
+//
+
+using System;
+
+namespace ICSharpCode.Build.Tasks
+{
+ ///
+ /// Base class for the Mcs and Gmcs tasks.
+ ///
+ public abstract class MonoCSharpCompilerTask : MonoCompilerTask
+ {
+ bool checkForOverflowUnderflow;
+ bool delaySign;
+ string documentationFile;
+ string keyContainer;
+ string keyFile;
+ string langVersion;
+ string moduleAssemblyName;
+ bool noConfig;
+ string win32Icon;
+ string win32Resource;
+
+ public bool CheckForOverflowUnderflow {
+ get {
+ return checkForOverflowUnderflow;
+ }
+ set {
+ checkForOverflowUnderflow = value;
+ }
+ }
+
+ public bool DelaySign {
+ get {
+ return delaySign;
+ }
+
+ set {
+ delaySign = value;
+ }
+ }
+
+ public string DocumentationFile {
+ get {
+ return documentationFile;
+ }
+ set {
+ documentationFile = value;
+ }
+ }
+
+ public string KeyContainer {
+ get {
+ return keyContainer;
+ }
+ set {
+ keyContainer = value;
+ }
+ }
+
+ public string KeyFile {
+ get {
+ return keyFile;
+ }
+ set {
+ keyFile = value;
+ }
+ }
+
+ public string LangVersion {
+ get {
+ return langVersion;
+ }
+ set {
+ langVersion = value;
+ }
+ }
+
+ public string ModuleAssemblyName {
+ get {
+ return moduleAssemblyName;
+ }
+ set {
+ moduleAssemblyName = value;
+ }
+ }
+
+ public bool NoConfig {
+ get {
+ return noConfig;
+ }
+ set {
+ noConfig = value;
+ }
+ }
+
+ public string Win32Icon {
+ get {
+ return win32Icon;
+ }
+ set {
+ win32Icon = value;
+ }
+ }
+
+ public string Win32Resource {
+ get {
+ return win32Resource;
+ }
+ set {
+ win32Resource = value;
+ }
+ }
+
+ protected override string GenerateCommandLineArguments()
+ {
+ CompilerCommandLineArguments args = new CompilerCommandLineArguments();
+ args.AppendSwitchIfTrue("-noconfig", noConfig);
+ if (IsWarningLevelSet) {
+ args.AppendSwitch("-warn:", WarningLevel.ToString());
+ }
+ args.AppendFileNameIfNotNull("-out:", OutputAssembly);
+ args.AppendTarget(TargetType);
+ args.AppendSwitchIfTrue("-debug", EmitDebugInformation);
+ args.AppendSwitchIfTrue("-optimize", Optimize);
+ args.AppendSwitchIfTrue("-nologo", NoLogo);
+ args.AppendSwitchIfTrue("-unsafe", AllowUnsafeBlocks);
+ args.AppendSwitchIfTrue("-nostdlib", NoStandardLib);
+ args.AppendSwitchIfTrue("-checked", checkForOverflowUnderflow);
+ args.AppendSwitchIfTrue("-delaysign", delaySign);
+ args.AppendSwitchIfNotNull("-langversion:", langVersion);
+ args.AppendSwitchIfNotNull("-keycontainer:", keyContainer);
+ args.AppendSwitchIfNotNull("-keyfile:", keyFile);
+ args.AppendSwitchIfNotNull("-define:", DefineConstants);
+ args.AppendSwitchIfTrue("-warnaserror", TreatWarningsAsErrors);
+ args.AppendSwitchIfNotNull("-nowarn:", DisabledWarnings);
+ args.AppendSwitchIfNotNull("-main:", MainEntryPoint);
+ args.AppendFileNameIfNotNull("-doc:", documentationFile);
+ args.AppendSwitchIfNotNull("-lib:", AdditionalLibPaths, ",");
+ args.AppendReferencesIfNotNull(References);
+ args.AppendItemsIfNotNull("-resource:", Resources);
+ args.AppendFileNameIfNotNull("-win32res:", win32Resource);
+ args.AppendFileNameIfNotNull("-win32icon:", win32Icon);
+ args.AppendFileNamesIfNotNull(Sources, " ");
+
+ return args.ToString();
+ }
+
+ protected override ICompilerResultsParser GetCompilerResultsParser()
+ {
+ return new MonoCSharpCompilerResultsParser();
+ }
+ }
+}
diff --git a/src/Libraries/ICSharpCode.Build.Tasks/Project/MonoCompiler.cs b/src/Libraries/ICSharpCode.Build.Tasks/Project/MonoCompiler.cs
index d5b6295717..0756782bda 100644
--- a/src/Libraries/ICSharpCode.Build.Tasks/Project/MonoCompiler.cs
+++ b/src/Libraries/ICSharpCode.Build.Tasks/Project/MonoCompiler.cs
@@ -35,7 +35,7 @@ namespace ICSharpCode.Build.Tasks
int returnValue = Executor.ExecWaitWithCapture(command, tempFiles, ref outputFileName, ref errorFileName);
- results = parser.Parse(tempFiles, errorFileName);
+ results = parser.Parse(tempFiles, outputFileName, errorFileName);
File.Delete(responseFileName);
File.Delete(outputFileName);
diff --git a/src/Libraries/ICSharpCode.Build.Tasks/Project/MonoCompilerTask.cs b/src/Libraries/ICSharpCode.Build.Tasks/Project/MonoCompilerTask.cs
index eb4ab3b389..cfbc9dc813 100644
--- a/src/Libraries/ICSharpCode.Build.Tasks/Project/MonoCompilerTask.cs
+++ b/src/Libraries/ICSharpCode.Build.Tasks/Project/MonoCompilerTask.cs
@@ -13,28 +13,22 @@ using System.CodeDom.Compiler;
namespace ICSharpCode.Build.Tasks
{
///
- /// Base class task for the mono compilers mcs and gmcs.
+ /// Base class task for the mono compilers mcs, gmcs and mbas.
///
public abstract class MonoCompilerTask : MyToolTask
{
+ public const int DefaultWarningLevel = 2;
+
string[] additionalLibPaths;
string[] addModules;
bool allowUnsafeBlocks;
- bool checkForOverflowUnderflow;
int codePage;
string debugType;
string defineConstants;
- bool delaySign;
string disabledWarnings;
- string documentationFile;
- string emitDebugInformation;
- string keyContainer;
- string keyFile;
- string langVersion;
+ bool emitDebugInformation;
ITaskItem[] linkResources;
string mainEntryPoint;
- string moduleAssemblyName;
- bool noConfig;
bool noLogo;
bool noStandardLib;
bool optimize;
@@ -45,9 +39,17 @@ namespace ICSharpCode.Build.Tasks
ITaskItem[] sources;
string targetType;
bool treatWarningsAsErrors;
- int warningLevel;
- string win32Icon;
- string win32Resource;
+ int warningLevel = DefaultWarningLevel;
+ bool warningLevelSet;
+
+ public bool AllowUnsafeBlocks {
+ get {
+ return allowUnsafeBlocks;
+ }
+ set {
+ allowUnsafeBlocks = value;
+ }
+ }
public string[] AdditionalLibPaths {
get {
@@ -67,24 +69,6 @@ namespace ICSharpCode.Build.Tasks
}
}
- public bool AllowUnsafeBlocks {
- get {
- return allowUnsafeBlocks;
- }
- set {
- allowUnsafeBlocks = value;
- }
- }
-
- public bool CheckForOverflowUnderflow {
- get {
- return checkForOverflowUnderflow;
- }
- set {
- checkForOverflowUnderflow = value;
- }
- }
-
public int CodePage {
get {
return codePage;
@@ -102,7 +86,7 @@ namespace ICSharpCode.Build.Tasks
debugType = value;
}
}
-
+
public string DefineConstants {
get {
return defineConstants;
@@ -112,16 +96,6 @@ namespace ICSharpCode.Build.Tasks
}
}
- public bool DelaySign {
- get {
- return delaySign;
- }
-
- set {
- delaySign = value;
- }
- }
-
public string DisabledWarnings {
get {
return disabledWarnings;
@@ -130,17 +104,8 @@ namespace ICSharpCode.Build.Tasks
disabledWarnings = value;
}
}
-
- public string DocumentationFile {
- get {
- return documentationFile;
- }
- set {
- documentationFile = value;
- }
- }
-
- public string EmitDebugInformation {
+
+ public bool EmitDebugInformation {
get {
return emitDebugInformation;
}
@@ -149,33 +114,6 @@ namespace ICSharpCode.Build.Tasks
}
}
- public string KeyContainer {
- get {
- return keyContainer;
- }
- set {
- keyContainer = value;
- }
- }
-
- public string KeyFile {
- get {
- return keyFile;
- }
- set {
- keyFile = value;
- }
- }
-
- public string LangVersion {
- get {
- return langVersion;
- }
- set {
- langVersion = value;
- }
- }
-
public ITaskItem[] LinkResources {
get {
return linkResources;
@@ -193,25 +131,7 @@ namespace ICSharpCode.Build.Tasks
mainEntryPoint = value;
}
}
-
- public string ModuleAssemblyName {
- get {
- return moduleAssemblyName;
- }
- set {
- moduleAssemblyName = value;
- }
- }
-
- public bool NoConfig {
- get {
- return noConfig;
- }
- set {
- noConfig = value;
- }
- }
-
+
public bool NoLogo {
get {
return noLogo;
@@ -220,7 +140,7 @@ namespace ICSharpCode.Build.Tasks
noLogo = value;
}
}
-
+
public bool NoStandardLib {
get {
return noStandardLib;
@@ -229,6 +149,7 @@ namespace ICSharpCode.Build.Tasks
noStandardLib = value;
}
}
+
public bool Optimize {
get {
@@ -307,32 +228,17 @@ namespace ICSharpCode.Build.Tasks
}
set {
warningLevel = value;
- }
- }
-
- public string Win32Icon {
- get {
- return win32Icon;
- }
- set {
- win32Icon = value;
- }
- }
-
- public string Win32Resource {
- get {
- return win32Resource;
- }
- set {
- win32Resource = value;
+ warningLevelSet = true;
}
}
public override bool Execute()
{
- string args = GenerateCommandLineArguments();
-
+ string args = GenerateCommandLineArguments();
ToolPath = GenerateFullPathToTool();
+
+ LogToolCommand(String.Concat(ToolPath, " ", args));
+
MonoCompiler compiler = new MonoCompiler();
int returnValue = compiler.Run(ToolPath, args, GetCompilerResultsParser());
@@ -353,18 +259,29 @@ namespace ICSharpCode.Build.Tasks
return errorCount == 0;
}
+ ///
+ /// Determines whether the warning level property has been set.
+ ///
+ protected bool IsWarningLevelSet {
+ get {
+ return warningLevelSet;
+ }
+ }
+
///
/// Command line arguments that will be passed to the compiler.
///
protected virtual string GenerateCommandLineArguments()
{
- CompilerCommandLineArguments args = new CompilerCommandLineArguments(this);
- return args.ToString();
+ return String.Empty;
}
+ ///
+ /// Gets the parser that handles the compiler output.
+ ///
protected virtual ICompilerResultsParser GetCompilerResultsParser()
{
- return new CompilerResultsParser();
+ return null;
}
}
}
diff --git a/src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.Mono.Gmcs.targets b/src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.Mono.Gmcs.targets
index 43920fdff5..7629f8c358 100644
--- a/src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.Mono.Gmcs.targets
+++ b/src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.Mono.Gmcs.targets
@@ -12,7 +12,7 @@
AssemblyFile="$(SharpDevelopBinPath)\ICSharpCode.Build.Tasks.dll"/>
- $(MSBuildAllProjects);$(SharpDevelopBinPath)\SharpDevelop.Build.Mono.targets
+ $(MSBuildAllProjects);$(SharpDevelopBuildBinPath)\SharpDevelop.Build.Mono.Gmcs.targets
.cs
C#
diff --git a/src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.Mono.Mbas.targets b/src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.Mono.Mbas.targets
new file mode 100644
index 0000000000..af6994b527
--- /dev/null
+++ b/src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.Mono.Mbas.targets
@@ -0,0 +1,114 @@
+
+
+
+
+
+
+
+
+
+
+ $(MSBuildAllProjects);$(SharpDevelopBuildBinPath)\SharpDevelop.Build.Mono.Mbas.targets
+ .vb
+ VB
+
+
+
+
+
+ {CandidateAssemblyFiles};
+ $(ReferencePath);
+ {HintPathFromItem};
+ {TargetFrameworkDirectory};
+ {MonoGAC};
+ {RawFileName};
+ $(OutputPath)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ GetFrameworkPaths;
+ GetRedistLists;
+ PrepareForBuild;
+ AddMonoAssemblySearchPaths
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.Mono.Mcs.targets b/src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.Mono.Mcs.targets
index 53a7a5a219..00888d0a1e 100644
--- a/src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.Mono.Mcs.targets
+++ b/src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.Mono.Mcs.targets
@@ -12,7 +12,7 @@
AssemblyFile="$(SharpDevelopBinPath)\ICSharpCode.Build.Tasks.dll"/>
- $(MSBuildAllProjects);$(SharpDevelopBinPath)\SharpDevelop.Build.Mono.targets
+ $(MSBuildAllProjects);$(SharpDevelopBuildBinPath)\SharpDevelop.Build.Mono.Mcs.targets
.cs
C#
diff --git a/src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.VisualBasic.targets b/src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.VisualBasic.targets
index d3efa3602f..55c756912a 100644
--- a/src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.VisualBasic.targets
+++ b/src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.VisualBasic.targets
@@ -133,7 +133,8 @@
Win32Icon="$(ApplicationIcon)"
Win32Resource="$(Win32Resource)"
/>
-
-
+
+
+
diff --git a/src/Libraries/ICSharpCode.Build.Tasks/Test/CompilerCommandLineTestFixture.cs b/src/Libraries/ICSharpCode.Build.Tasks/Test/CompilerCommandLineTestFixture.cs
deleted file mode 100644
index 77482bf640..0000000000
--- a/src/Libraries/ICSharpCode.Build.Tasks/Test/CompilerCommandLineTestFixture.cs
+++ /dev/null
@@ -1,273 +0,0 @@
-//
-//
-//
-//
-// $Revision$
-//
-
-using ICSharpCode.Build.Tasks;
-using NUnit.Framework;
-using Microsoft.Build.Utilities;
-using System;
-using System.Collections.Generic;
-
-namespace ICSharpCode.Build.Tasks.Tests
-{
- [TestFixture]
- public class CompilerCommandLineTestFixture
- {
- [Test]
- public void NoArguments()
- {
- Mcs mcs = new Mcs();
-
- CompilerCommandLineArguments args = new CompilerCommandLineArguments(mcs);
- Assert.AreEqual("-warn:0", args.ToString());
- }
-
- [Test]
- public void OutputAssembly()
- {
- Mcs mcs = new Mcs();
- string outputAssembly = @"obj\debug\test.exe";
- mcs.OutputAssembly = new TaskItem(outputAssembly);
-
- CompilerCommandLineArguments args = new CompilerCommandLineArguments(mcs);
- Assert.AreEqual(@"-warn:0 -out:obj\debug\test.exe", args.ToString());
- }
-
- [Test]
- public void OutputAssemblyWithSpace()
- {
- Mcs mcs = new Mcs();
- string outputAssembly = @"obj\debug\test this.exe";
- mcs.OutputAssembly = new TaskItem(outputAssembly);
-
- CompilerCommandLineArguments args = new CompilerCommandLineArguments(mcs);
- Assert.AreEqual("-warn:0 -out:\"obj\\debug\\test this.exe\"", args.ToString());
- }
-
- [Test]
- public void WinExeTarget()
- {
- Mcs mcs = new Mcs();
- mcs.TargetType = "Exe";
-
- CompilerCommandLineArguments args = new CompilerCommandLineArguments(mcs);
- Assert.AreEqual("-warn:0 -target:exe", args.ToString());
- }
-
- [Test]
- public void ModuleTarget()
- {
- Mcs mcs = new Mcs();
- mcs.TargetType = "Module";
-
- CompilerCommandLineArguments args = new CompilerCommandLineArguments(mcs);
- Assert.AreEqual("-warn:0 -target:module", args.ToString());
- }
-
- [Test]
- public void FullDebugging()
- {
- Mcs mcs = new Mcs();
- mcs.DebugType = "Full";
-
- CompilerCommandLineArguments args = new CompilerCommandLineArguments(mcs);
- Assert.AreEqual("-warn:0 -debug", args.ToString());
- }
-
- [Test]
- public void Optimize()
- {
- Mcs mcs = new Mcs();
- mcs.Optimize = true;
-
- CompilerCommandLineArguments args = new CompilerCommandLineArguments(mcs);
- Assert.AreEqual("-warn:0 -optimize", args.ToString());
- }
-
- [Test]
- public void NoLogo()
- {
- Mcs mcs = new Mcs();
- mcs.NoLogo = true;
-
- CompilerCommandLineArguments args = new CompilerCommandLineArguments(mcs);
- Assert.AreEqual("-warn:0 -nologo", args.ToString());
- }
-
- [Test]
- public void Unsafe()
- {
- Mcs mcs = new Mcs();
- mcs.AllowUnsafeBlocks = true;
-
- CompilerCommandLineArguments args = new CompilerCommandLineArguments(mcs);
- Assert.AreEqual("-warn:0 -unsafe", args.ToString());
- }
-
- [Test]
- public void NoStandardLib()
- {
- Mcs mcs = new Mcs();
- mcs.NoStandardLib = true;
-
- CompilerCommandLineArguments args = new CompilerCommandLineArguments(mcs);
- Assert.AreEqual("-warn:0 -nostdlib", args.ToString());
- }
-
- [Test]
- public void DelaySign()
- {
- Mcs mcs = new Mcs();
- mcs.DelaySign = true;
-
- CompilerCommandLineArguments args = new CompilerCommandLineArguments(mcs);
- Assert.AreEqual("-warn:0 -delaysign", args.ToString());
- }
-
- [Test]
- public void DefineConstants()
- {
- Mcs mcs = new Mcs();
- mcs.DefineConstants = "DEBUG;TRACE";
-
- CompilerCommandLineArguments args = new CompilerCommandLineArguments(mcs);
- Assert.AreEqual("-warn:0 -define:\"DEBUG;TRACE\"", args.ToString());
- }
-
- [Test]
- public void WarnAsError()
- {
- Mcs mcs = new Mcs();
- mcs.TreatWarningsAsErrors = true;
-
- CompilerCommandLineArguments args = new CompilerCommandLineArguments(mcs);
- Assert.AreEqual("-warn:0 -warnaserror", args.ToString());
- }
-
- [Test]
- public void NoWarn()
- {
- Mcs mcs = new Mcs();
- mcs.DisabledWarnings = "1234,5678";
-
- CompilerCommandLineArguments args = new CompilerCommandLineArguments(mcs);
- Assert.AreEqual("-warn:0 -nowarn:\"1234,5678\"", args.ToString());
- }
-
- [Test]
- public void MainEntryPoint()
- {
- Mcs mcs = new Mcs();
- mcs.MainEntryPoint = "Console.MainClass.Main";
-
- CompilerCommandLineArguments args = new CompilerCommandLineArguments(mcs);
- Assert.AreEqual("-warn:0 -main:Console.MainClass.Main", args.ToString());
- }
-
- [Test]
- public void DocumentationFile()
- {
- Mcs mcs = new Mcs();
- mcs.DocumentationFile = @"obj\debug test\test.exe.xml";
-
- CompilerCommandLineArguments args = new CompilerCommandLineArguments(mcs);
- Assert.AreEqual("-warn:0 -doc:\"obj\\debug test\\test.exe.xml\"", args.ToString());
- }
-
- [Test]
- public void SingleSourceFile()
- {
- Mcs mcs = new Mcs();
- mcs.Sources = new TaskItem[] { new TaskItem("proj src\\Main.cs") };
-
- CompilerCommandLineArguments args = new CompilerCommandLineArguments(mcs);
- Assert.AreEqual("-warn:0 \"proj src\\Main.cs\"", args.ToString());
- }
-
- [Test]
- public void MultipleSourceFiles()
- {
- Mcs mcs = new Mcs();
- mcs.Sources = new TaskItem[] { new TaskItem("proj src\\Main.cs"),
- new TaskItem("AssemblyInfo.cs") };
-
- CompilerCommandLineArguments args = new CompilerCommandLineArguments(mcs);
- Assert.AreEqual("-warn:0 \"proj src\\Main.cs\" AssemblyInfo.cs", args.ToString());
- }
-
- [Test]
- public void SingleReference()
- {
- Mcs mcs = new Mcs();
- mcs.References = new TaskItem[] { new TaskItem("proj refs\\Test.dll") };
-
- CompilerCommandLineArguments args = new CompilerCommandLineArguments(mcs);
- Assert.AreEqual("-warn:0 -r:\"proj refs\\Test.dll\"", args.ToString());
- }
-
- [Test]
- public void NetModuleReference()
- {
- Mcs mcs = new Mcs();
- mcs.References = new TaskItem[] { new TaskItem("proj refs\\Test.dll"),
- new TaskItem("proj refs\\Run.netmodule") };
-
- CompilerCommandLineArguments args = new CompilerCommandLineArguments(mcs);
- Assert.AreEqual("-warn:0 -r:\"proj refs\\Test.dll\" -addmodule:\"proj refs\\Run.netmodule\"", args.ToString());
- }
-
- [Test]
- public void AdditionalLibPaths()
- {
- Mcs mcs = new Mcs();
- mcs.AdditionalLibPaths = new string[] { "proj\\My libs", "proj\\My libs2" };
-
- CompilerCommandLineArguments args = new CompilerCommandLineArguments(mcs);
- Assert.AreEqual("-warn:0 -lib:\"proj\\My libs\",\"proj\\My libs2\"", args.ToString());
- }
-
- [Test]
- public void EmbeddedResources()
- {
- Mcs mcs = new Mcs();
- mcs.Resources = new TaskItem[] { new TaskItem("proj res\\Test.xml"),
- new TaskItem("proj res\\Run.xml") };
-
- CompilerCommandLineArguments args = new CompilerCommandLineArguments(mcs);
- Assert.AreEqual("-warn:0 -resource:\"proj res\\Test.xml\" -resource:\"proj res\\Run.xml\"", args.ToString());
- }
-
- [Test]
- public void Win32Resource()
- {
- Mcs mcs = new Mcs();
- mcs.Win32Resource = "Project Resources\\Test.res";
-
- CompilerCommandLineArguments args = new CompilerCommandLineArguments(mcs);
- Assert.AreEqual("-warn:0 -win32res:\"Project Resources\\Test.res\"", args.ToString());
- }
-
- [Test]
- public void Win32Icon()
- {
- Mcs mcs = new Mcs();
- mcs.Win32Icon = "Project Icons\\app.ico";
-
- CompilerCommandLineArguments args = new CompilerCommandLineArguments(mcs);
- Assert.AreEqual("-warn:0 -win32icon:\"Project Icons\\app.ico\"", args.ToString());
- }
-
- [Test]
- public void Checked()
- {
- Mcs mcs = new Mcs();
- mcs.CheckForOverflowUnderflow = true;
-
- CompilerCommandLineArguments args = new CompilerCommandLineArguments(mcs);
- Assert.AreEqual("-warn:0 -checked", args.ToString());
- }
- }
-}
diff --git a/src/Libraries/ICSharpCode.Build.Tasks/Test/GeneralErrorParseTestFixture.cs b/src/Libraries/ICSharpCode.Build.Tasks/Test/GeneralErrorParseTestFixture.cs
index e678e6c175..dc552df526 100644
--- a/src/Libraries/ICSharpCode.Build.Tasks/Test/GeneralErrorParseTestFixture.cs
+++ b/src/Libraries/ICSharpCode.Build.Tasks/Test/GeneralErrorParseTestFixture.cs
@@ -22,7 +22,7 @@ namespace ICSharpCode.Build.Tasks.Tests
{
string error = "error CS1904: `CS0169' is not a valid warning number";
- Regex regex = new Regex(CompilerResultsParser.GeneralErrorPattern, RegexOptions.Compiled);
+ Regex regex = new Regex(MonoCSharpCompilerResultsParser.GeneralErrorPattern, RegexOptions.Compiled);
match = regex.Match(error);
}
diff --git a/src/Libraries/ICSharpCode.Build.Tasks/Test/ICSharpCode.Build.Tasks.Tests.csproj b/src/Libraries/ICSharpCode.Build.Tasks/Test/ICSharpCode.Build.Tasks.Tests.csproj
index 18358c80eb..225768913c 100644
--- a/src/Libraries/ICSharpCode.Build.Tasks/Test/ICSharpCode.Build.Tasks.Tests.csproj
+++ b/src/Libraries/ICSharpCode.Build.Tasks/Test/ICSharpCode.Build.Tasks.Tests.csproj
@@ -43,10 +43,14 @@
-
+
+
+
+
+
diff --git a/src/Libraries/ICSharpCode.Build.Tasks/Test/MockMbas.cs b/src/Libraries/ICSharpCode.Build.Tasks/Test/MockMbas.cs
new file mode 100644
index 0000000000..7c4ccbcabf
--- /dev/null
+++ b/src/Libraries/ICSharpCode.Build.Tasks/Test/MockMbas.cs
@@ -0,0 +1,28 @@
+//
+//
+//
+//
+// $Revision$
+//
+
+using ICSharpCode.Build.Tasks;
+using System;
+
+namespace ICSharpCode.Build.Tasks.Tests
+{
+ ///
+ /// Helper class that allows us to test protected methods of the
+ /// Mbas class.
+ ///
+ public class MockMbas : Mbas
+ {
+ ///
+ /// Generates the Mbas command line arguments via the protected
+ /// GenerateCommandLineArguments method.
+ ///
+ public string GetCommandLine()
+ {
+ return base.GenerateCommandLineArguments();
+ }
+ }
+}
diff --git a/src/Libraries/ICSharpCode.Build.Tasks/Test/MockMonoCSharpCompilerTask.cs b/src/Libraries/ICSharpCode.Build.Tasks/Test/MockMonoCSharpCompilerTask.cs
new file mode 100644
index 0000000000..7b3f7585e4
--- /dev/null
+++ b/src/Libraries/ICSharpCode.Build.Tasks/Test/MockMonoCSharpCompilerTask.cs
@@ -0,0 +1,34 @@
+//
+//
+//
+//
+// $Revision$
+//
+
+using ICSharpCode.Build.Tasks;
+using System;
+
+namespace ICSharpCode.Build.Tasks.Tests
+{
+ ///
+ /// Helper class that allows us to test protected methods of the
+ /// MonoCSharpCompilerTask class.
+ ///
+ public class MockMonoCSharpCompilerTask : MonoCSharpCompilerTask
+ {
+ ///
+ /// Generates the MonoCSharpCompilerTask command line arguments via the
+ /// protected GenerateCommandLineArguments method.
+ ///
+ public string GetCommandLine()
+ {
+ return base.GenerateCommandLineArguments();
+ }
+
+ protected override string ToolName {
+ get {
+ return "MonoCSharp.exe";
+ }
+ }
+ }
+}
diff --git a/src/Libraries/ICSharpCode.Build.Tasks/Test/MonoBasicCommandLineTestFixture.cs b/src/Libraries/ICSharpCode.Build.Tasks/Test/MonoBasicCommandLineTestFixture.cs
new file mode 100644
index 0000000000..452cbc17d7
--- /dev/null
+++ b/src/Libraries/ICSharpCode.Build.Tasks/Test/MonoBasicCommandLineTestFixture.cs
@@ -0,0 +1,206 @@
+//
+//
+//
+//
+// $Revision$
+//
+
+using ICSharpCode.Build.Tasks;
+using NUnit.Framework;
+using Microsoft.Build.Utilities;
+using System;
+using System.Collections.Generic;
+
+namespace ICSharpCode.Build.Tasks.Tests
+{
+ [TestFixture]
+ public class MonoBasicCommandLineTestFixture
+ {
+ [Test]
+ public void NoArgs()
+ {
+ MockMbas mbas = new MockMbas();
+ Assert.AreEqual(String.Empty, mbas.GetCommandLine());
+ }
+
+ [Test]
+ public void NoStandardLib()
+ {
+ MockMbas mbas = new MockMbas();
+ mbas.NoStandardLib = true;
+ Assert.AreEqual("-nostdlib", mbas.GetCommandLine());
+ }
+
+ [Test]
+ public void OutputAssembly()
+ {
+ MockMbas mbas = new MockMbas();
+ string outputAssembly = @"obj\debug\test.exe";
+ mbas.OutputAssembly = new TaskItem(outputAssembly);
+ Assert.AreEqual(@"-out:obj\debug\test.exe", mbas.GetCommandLine());
+ }
+
+ [Test]
+ public void Unsafe()
+ {
+ MockMbas mbas = new MockMbas();
+ mbas.AllowUnsafeBlocks = true;
+ Assert.AreEqual("-unsafe", mbas.GetCommandLine());
+ }
+
+ [Test]
+ public void WarnAsError()
+ {
+ MockMbas mbas = new MockMbas();
+ mbas.TreatWarningsAsErrors = true;
+ Assert.AreEqual("-warnaserror", mbas.GetCommandLine());
+ }
+
+ [Test]
+ public void WinExeTarget()
+ {
+ MockMbas mbas = new MockMbas();
+ mbas.TargetType = "Exe";
+ Assert.AreEqual("-target:exe", mbas.GetCommandLine());
+ }
+
+ [Test]
+ public void FullDebugging()
+ {
+ MockMbas mbas = new MockMbas();
+ mbas.DebugType = "Full";
+ Assert.AreEqual("-debug:full", mbas.GetCommandLine());
+ }
+
+ [Test]
+ public void EmitDebuggingInfo()
+ {
+ MockMbas mbas = new MockMbas();
+ mbas.EmitDebugInformation = true;
+ Assert.AreEqual("-debug", mbas.GetCommandLine());
+ }
+
+ [Test]
+ public void NoLogo()
+ {
+ MockMbas mbas = new MockMbas();
+ mbas.NoLogo = true;
+ Assert.AreEqual("-nologo", mbas.GetCommandLine());
+ }
+
+ [Test]
+ public void DefineConstants()
+ {
+ MockMbas mbas = new MockMbas();
+ mbas.DefineConstants = "DEBUG=1,TRACE=1";
+ Assert.AreEqual("-define:\"DEBUG=1,TRACE=1\"", mbas.GetCommandLine());
+ }
+
+ [Test]
+ public void MainEntryPoint()
+ {
+ MockMbas mbas = new MockMbas();
+ mbas.MainEntryPoint = "Console.MainClass.Main";
+ Assert.AreEqual("-main:Console.MainClass.Main", mbas.GetCommandLine());
+ }
+
+ [Test]
+ public void SingleSourceFile()
+ {
+ MockMbas mbas = new MockMbas();
+ mbas.Sources = new TaskItem[] { new TaskItem("proj src\\Main.vb") };
+ Assert.AreEqual("\"proj src\\Main.vb\"", mbas.GetCommandLine());
+ }
+
+ [Test]
+ public void SingleReference()
+ {
+ MockMbas mbas = new MockMbas();
+ mbas.References = new TaskItem[] { new TaskItem("proj refs\\Test.dll") };
+ Assert.AreEqual("-r:\"proj refs\\Test.dll\"", mbas.GetCommandLine());
+ }
+
+ [Test]
+ public void AdditionalLibPaths()
+ {
+ MockMbas mbas = new MockMbas();
+ mbas.AdditionalLibPaths = new string[] { "proj\\My libs", "proj\\My libs2" };
+ Assert.AreEqual("-lib:\"proj\\My libs\",\"proj\\My libs2\"", mbas.GetCommandLine());
+ }
+
+ [Test]
+ public void EmbeddedResources()
+ {
+ MockMbas mbas = new MockMbas();
+ mbas.Resources = new TaskItem[] { new TaskItem("proj res\\Test.xml"),
+ new TaskItem("proj res\\Run.xml") };
+ Assert.AreEqual("-resource:\"proj res\\Test.xml\" -resource:\"proj res\\Run.xml\"", mbas.GetCommandLine());
+ }
+
+ [Test]
+ public void OptionStrict()
+ {
+ MockMbas mbas = new MockMbas();
+ mbas.OptionStrict = true;
+ Assert.AreEqual("-optionstrict", mbas.GetCommandLine());
+ }
+
+ [Test]
+ public void OptionExplicit()
+ {
+ MockMbas mbas = new MockMbas();
+ mbas.OptionExplicit = true;
+ Assert.AreEqual("-optionexplicit", mbas.GetCommandLine());
+ }
+
+ [Test]
+ public void MultipleImports()
+ {
+ MockMbas mbas = new MockMbas();
+ mbas.Imports = new TaskItem[] { new TaskItem("System.IO"),
+ new TaskItem("Microsoft.VisualBasic") };
+ Assert.AreEqual("-imports:System.IO -imports:Microsoft.VisualBasic", mbas.GetCommandLine());
+ }
+
+ [Test]
+ public void RemoveIntChecks()
+ {
+ MockMbas mbas = new MockMbas();
+ mbas.RemoveIntegerChecks = true;
+ Assert.AreEqual("-removeintchecks", mbas.GetCommandLine());
+ }
+
+ [Test]
+ public void RootNamespace()
+ {
+ MockMbas mbas = new MockMbas();
+ mbas.RootNamespace = "MyNamespace";
+ Assert.AreEqual("-rootnamespace:MyNamespace", mbas.GetCommandLine());
+ }
+
+ [Test]
+ public void WarningLevel()
+ {
+ MockMbas mbas = new MockMbas();
+ mbas.WarningLevel = 3;
+ Assert.AreEqual("-wlevel:3", mbas.GetCommandLine());
+ }
+
+ [Test]
+ public void NoWarnings()
+ {
+ MockMbas mbas = new MockMbas();
+ mbas.NoWarnings = true;
+ Assert.AreEqual("-nowarn", mbas.GetCommandLine());
+ }
+
+ [Test]
+ public void DisabledWarnings()
+ {
+ MockMbas mbas = new MockMbas();
+ mbas.DisabledWarnings = "1234,5678";
+ Assert.AreEqual("-ignorewarn:\"1234,5678\"", mbas.GetCommandLine());
+ }
+
+ }
+}
diff --git a/src/Libraries/ICSharpCode.Build.Tasks/Test/MonoCSharpCompilerCommandLineTestFixture.cs b/src/Libraries/ICSharpCode.Build.Tasks/Test/MonoCSharpCompilerCommandLineTestFixture.cs
new file mode 100644
index 0000000000..36078f9304
--- /dev/null
+++ b/src/Libraries/ICSharpCode.Build.Tasks/Test/MonoCSharpCompilerCommandLineTestFixture.cs
@@ -0,0 +1,231 @@
+//
+//
+//
+//
+// $Revision$
+//
+
+using ICSharpCode.Build.Tasks;
+using NUnit.Framework;
+using Microsoft.Build.Utilities;
+using System;
+using System.Collections.Generic;
+
+namespace ICSharpCode.Build.Tasks.Tests
+{
+ [TestFixture]
+ public class MonoCSharpCompilerCommandLineTestFixture
+ {
+ [Test]
+ public void NoArguments()
+ {
+ MockMonoCSharpCompilerTask mcs = new MockMonoCSharpCompilerTask();
+ Assert.AreEqual(String.Empty, mcs.GetCommandLine());
+ }
+
+ [Test]
+ public void OutputAssembly()
+ {
+ MockMonoCSharpCompilerTask mcs = new MockMonoCSharpCompilerTask();
+ string outputAssembly = @"obj\debug\test.exe";
+ mcs.OutputAssembly = new TaskItem(outputAssembly);
+ Assert.AreEqual(@"-out:obj\debug\test.exe", mcs.GetCommandLine());
+ }
+
+ [Test]
+ public void OutputAssemblyWithSpace()
+ {
+ MockMonoCSharpCompilerTask mcs = new MockMonoCSharpCompilerTask();
+ string outputAssembly = @"obj\debug\test this.exe";
+ mcs.OutputAssembly = new TaskItem(outputAssembly);
+ Assert.AreEqual("-out:\"obj\\debug\\test this.exe\"", mcs.GetCommandLine());
+ }
+
+ [Test]
+ public void WinExeTarget()
+ {
+ MockMonoCSharpCompilerTask mcs = new MockMonoCSharpCompilerTask();
+ mcs.TargetType = "Exe";
+ Assert.AreEqual("-target:exe", mcs.GetCommandLine());
+ }
+
+ [Test]
+ public void ModuleTarget()
+ {
+ MockMonoCSharpCompilerTask mcs = new MockMonoCSharpCompilerTask();
+ mcs.TargetType = "Module";
+ Assert.AreEqual("-target:module", mcs.GetCommandLine());
+ }
+
+ [Test]
+ public void EmitDebuggingInfo()
+ {
+ MockMonoCSharpCompilerTask mcs = new MockMonoCSharpCompilerTask();
+ mcs.EmitDebugInformation = true;
+ Assert.AreEqual("-debug", mcs.GetCommandLine());
+ }
+
+ [Test]
+ public void Optimize()
+ {
+ MockMonoCSharpCompilerTask mcs = new MockMonoCSharpCompilerTask();
+ mcs.Optimize = true;
+ Assert.AreEqual("-optimize", mcs.GetCommandLine());
+ }
+
+ [Test]
+ public void NoLogo()
+ {
+ MockMonoCSharpCompilerTask mcs = new MockMonoCSharpCompilerTask();
+ mcs.NoLogo = true;
+ Assert.AreEqual("-nologo", mcs.GetCommandLine());
+ }
+
+ [Test]
+ public void Unsafe()
+ {
+ MockMonoCSharpCompilerTask mcs = new MockMonoCSharpCompilerTask();
+ mcs.AllowUnsafeBlocks = true;
+ Assert.AreEqual("-unsafe", mcs.GetCommandLine());
+ }
+
+ [Test]
+ public void NoStandardLib()
+ {
+ MockMonoCSharpCompilerTask mcs = new MockMonoCSharpCompilerTask();
+ mcs.NoStandardLib = true;
+ Assert.AreEqual("-nostdlib", mcs.GetCommandLine());
+ }
+
+ [Test]
+ public void DelaySign()
+ {
+ MockMonoCSharpCompilerTask mcs = new MockMonoCSharpCompilerTask();
+ mcs.DelaySign = true;
+ Assert.AreEqual("-delaysign", mcs.GetCommandLine());
+ }
+
+ [Test]
+ public void DefineConstants()
+ {
+ MockMonoCSharpCompilerTask mcs = new MockMonoCSharpCompilerTask();
+ mcs.DefineConstants = "DEBUG;TRACE";
+ Assert.AreEqual("-define:\"DEBUG;TRACE\"", mcs.GetCommandLine());
+ }
+
+ [Test]
+ public void WarnAsError()
+ {
+ MockMonoCSharpCompilerTask mcs = new MockMonoCSharpCompilerTask();
+ mcs.TreatWarningsAsErrors = true;
+ Assert.AreEqual("-warnaserror", mcs.GetCommandLine());
+ }
+
+ [Test]
+ public void DisabledWarnings()
+ {
+ MockMonoCSharpCompilerTask mcs = new MockMonoCSharpCompilerTask();
+ mcs.DisabledWarnings = "1234,5678";
+ Assert.AreEqual("-nowarn:\"1234,5678\"", mcs.GetCommandLine());
+ }
+
+ [Test]
+ public void MainEntryPoint()
+ {
+ MockMonoCSharpCompilerTask mcs = new MockMonoCSharpCompilerTask();
+ mcs.MainEntryPoint = "Console.MainClass.Main";
+ Assert.AreEqual("-main:Console.MainClass.Main", mcs.GetCommandLine());
+ }
+
+ [Test]
+ public void DocumentationFile()
+ {
+ MockMonoCSharpCompilerTask mcs = new MockMonoCSharpCompilerTask();
+ mcs.DocumentationFile = @"obj\debug test\test.exe.xml";
+ Assert.AreEqual("-doc:\"obj\\debug test\\test.exe.xml\"", mcs.GetCommandLine());
+ }
+
+ [Test]
+ public void SingleSourceFile()
+ {
+ MockMonoCSharpCompilerTask mcs = new MockMonoCSharpCompilerTask();
+ mcs.Sources = new TaskItem[] { new TaskItem("proj src\\Main.cs") };
+ Assert.AreEqual("\"proj src\\Main.cs\"", mcs.GetCommandLine());
+ }
+
+ [Test]
+ public void MultipleSourceFiles()
+ {
+ MockMonoCSharpCompilerTask mcs = new MockMonoCSharpCompilerTask();
+ mcs.Sources = new TaskItem[] { new TaskItem("proj src\\Main.cs"),
+ new TaskItem("AssemblyInfo.cs") };
+ Assert.AreEqual("\"proj src\\Main.cs\" AssemblyInfo.cs", mcs.GetCommandLine());
+ }
+
+ [Test]
+ public void SingleReference()
+ {
+ MockMonoCSharpCompilerTask mcs = new MockMonoCSharpCompilerTask();
+ mcs.References = new TaskItem[] { new TaskItem("proj refs\\Test.dll") };
+ Assert.AreEqual("-r:\"proj refs\\Test.dll\"", mcs.GetCommandLine());
+ }
+
+ [Test]
+ public void NetModuleReference()
+ {
+ MockMonoCSharpCompilerTask mcs = new MockMonoCSharpCompilerTask();
+ mcs.References = new TaskItem[] { new TaskItem("proj refs\\Test.dll"),
+ new TaskItem("proj refs\\Run.netmodule") };
+ Assert.AreEqual("-r:\"proj refs\\Test.dll\" -addmodule:\"proj refs\\Run.netmodule\"", mcs.GetCommandLine());
+ }
+
+ [Test]
+ public void AdditionalLibPaths()
+ {
+ MockMonoCSharpCompilerTask mcs = new MockMonoCSharpCompilerTask();
+ mcs.AdditionalLibPaths = new string[] { "proj\\My libs", "proj\\My libs2" };
+ Assert.AreEqual("-lib:\"proj\\My libs\",\"proj\\My libs2\"", mcs.GetCommandLine());
+ }
+
+ [Test]
+ public void EmbeddedResources()
+ {
+ MockMonoCSharpCompilerTask mcs = new MockMonoCSharpCompilerTask();
+ mcs.Resources = new TaskItem[] { new TaskItem("proj res\\Test.xml"),
+ new TaskItem("proj res\\Run.xml") };
+ Assert.AreEqual("-resource:\"proj res\\Test.xml\" -resource:\"proj res\\Run.xml\"", mcs.GetCommandLine());
+ }
+
+ [Test]
+ public void Win32Resource()
+ {
+ MockMonoCSharpCompilerTask mcs = new MockMonoCSharpCompilerTask();
+ mcs.Win32Resource = "Project Resources\\Test.res";
+ Assert.AreEqual("-win32res:\"Project Resources\\Test.res\"", mcs.GetCommandLine());
+ }
+
+ [Test]
+ public void Win32Icon()
+ {
+ MockMonoCSharpCompilerTask mcs = new MockMonoCSharpCompilerTask();
+ mcs.Win32Icon = "Project Icons\\app.ico";
+ Assert.AreEqual("-win32icon:\"Project Icons\\app.ico\"", mcs.GetCommandLine());
+ }
+
+ [Test]
+ public void Checked()
+ {
+ MockMonoCSharpCompilerTask mcs = new MockMonoCSharpCompilerTask();
+ mcs.CheckForOverflowUnderflow = true;
+ Assert.AreEqual("-checked", mcs.GetCommandLine());
+ }
+
+ [Test]
+ public void WarningLevel()
+ {
+ MockMonoCSharpCompilerTask mcs = new MockMonoCSharpCompilerTask();
+ mcs.WarningLevel = 3;
+ Assert.AreEqual("-warn:3", mcs.GetCommandLine());
+ }
+ }
+}
diff --git a/src/Libraries/ICSharpCode.Build.Tasks/Test/NormalMbasErrorParseTestFixture.cs b/src/Libraries/ICSharpCode.Build.Tasks/Test/NormalMbasErrorParseTestFixture.cs
new file mode 100644
index 0000000000..870f4cefd6
--- /dev/null
+++ b/src/Libraries/ICSharpCode.Build.Tasks/Test/NormalMbasErrorParseTestFixture.cs
@@ -0,0 +1,65 @@
+//
+//
+//
+//
+// $Revision$
+//
+
+using ICSharpCode.Build.Tasks;
+using NUnit.Framework;
+using System;
+using System.Text.RegularExpressions;
+
+namespace ICSharpCode.Build.Tasks.Tests
+{
+ [TestFixture]
+ public class NormalMbasErrorParseTestFixture
+ {
+ Match match;
+
+ [TestFixtureSetUp]
+ public void FixtureSetUp()
+ {
+ string error = "Form1.vb(38,3) error BC30201: Expression expected";
+
+ Regex regex = new Regex(MonoBasicCompilerResultsParser.NormalErrorPattern, RegexOptions.Compiled);
+ match = regex.Match(error);
+ }
+
+ [Test]
+ public void Column()
+ {
+ Assert.AreEqual("3", match.Result("${column}"));
+ }
+
+ [Test]
+ public void Line()
+ {
+ Assert.AreEqual("38", match.Result("${line}"));
+ }
+
+ [Test]
+ public void FileName()
+ {
+ Assert.AreEqual("Form1.vb", match.Result("${file}"));
+ }
+
+ [Test]
+ public void Warning()
+ {
+ Assert.AreEqual("error", match.Result("${error}"));
+ }
+
+ [Test]
+ public void ErrorNumber()
+ {
+ Assert.AreEqual("BC30201", match.Result("${number}"));
+ }
+
+ [Test]
+ public void ErrorText()
+ {
+ Assert.AreEqual("Expression expected", match.Result("${message}"));
+ }
+ }
+}
diff --git a/src/Libraries/ICSharpCode.Build.Tasks/Test/NormalMonoErrorParseTestFixture.cs b/src/Libraries/ICSharpCode.Build.Tasks/Test/NormalMonoErrorParseTestFixture.cs
index a405b1e965..d427f14ae5 100644
--- a/src/Libraries/ICSharpCode.Build.Tasks/Test/NormalMonoErrorParseTestFixture.cs
+++ b/src/Libraries/ICSharpCode.Build.Tasks/Test/NormalMonoErrorParseTestFixture.cs
@@ -22,7 +22,7 @@ namespace ICSharpCode.Build.Tasks.Tests
{
string error = "MyClass.cs(19,7): warning CS0169: The private field `Foo.MyClass.foo' is never used";
- Regex regex = new Regex(CompilerResultsParser.NormalErrorPattern, RegexOptions.Compiled);
+ Regex regex = new Regex(MonoCSharpCompilerResultsParser.NormalErrorPattern, RegexOptions.Compiled);
match = regex.Match(error);
}