Browse Source

VB.NET projects can now target Mono via the MonoBasic compiler. All Mono compiler command lines now logged and can be seen when running MSBuild from the command prompt. Added Gtk# project and file template for VB.NET.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@1157 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Matt Ward 20 years ago
parent
commit
9d52c21a2e
  1. 5
      data/templates/file/VBNet/FileCategorySortOrder.xml
  2. 39
      data/templates/file/VBNet/VBNet.Gtk.Window.xft
  3. 107
      data/templates/project/VBNet/GtkProject.xpt
  4. 5
      data/templates/project/VBNet/ProjectCategorySortOrder.xml
  5. 16
      src/Libraries/ICSharpCode.Build.Tasks/ICSharpCode.Build.Tasks.sln
  6. 94
      src/Libraries/ICSharpCode.Build.Tasks/Project/CompilerCommandLineArguments.cs
  7. 2
      src/Libraries/ICSharpCode.Build.Tasks/Project/Gmcs.cs
  8. 8
      src/Libraries/ICSharpCode.Build.Tasks/Project/ICSharpCode.Build.Tasks.csproj
  9. 2
      src/Libraries/ICSharpCode.Build.Tasks/Project/ICompilerResultsParser.cs
  10. 142
      src/Libraries/ICSharpCode.Build.Tasks/Project/Mbas.cs
  11. 2
      src/Libraries/ICSharpCode.Build.Tasks/Project/Mcs.cs
  12. 65
      src/Libraries/ICSharpCode.Build.Tasks/Project/MonoBasicCompilerResultsParser.cs
  13. 8
      src/Libraries/ICSharpCode.Build.Tasks/Project/MonoCSharpCompilerResultsParser.cs
  14. 158
      src/Libraries/ICSharpCode.Build.Tasks/Project/MonoCSharpCompilerTask.cs
  15. 2
      src/Libraries/ICSharpCode.Build.Tasks/Project/MonoCompiler.cs
  16. 163
      src/Libraries/ICSharpCode.Build.Tasks/Project/MonoCompilerTask.cs
  17. 2
      src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.Mono.Gmcs.targets
  18. 114
      src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.Mono.Mbas.targets
  19. 2
      src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.Mono.Mcs.targets
  20. 5
      src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.VisualBasic.targets
  21. 273
      src/Libraries/ICSharpCode.Build.Tasks/Test/CompilerCommandLineTestFixture.cs
  22. 2
      src/Libraries/ICSharpCode.Build.Tasks/Test/GeneralErrorParseTestFixture.cs
  23. 6
      src/Libraries/ICSharpCode.Build.Tasks/Test/ICSharpCode.Build.Tasks.Tests.csproj
  24. 28
      src/Libraries/ICSharpCode.Build.Tasks/Test/MockMbas.cs
  25. 34
      src/Libraries/ICSharpCode.Build.Tasks/Test/MockMonoCSharpCompilerTask.cs
  26. 206
      src/Libraries/ICSharpCode.Build.Tasks/Test/MonoBasicCommandLineTestFixture.cs
  27. 231
      src/Libraries/ICSharpCode.Build.Tasks/Test/MonoCSharpCompilerCommandLineTestFixture.cs
  28. 65
      src/Libraries/ICSharpCode.Build.Tasks/Test/NormalMbasErrorParseTestFixture.cs
  29. 2
      src/Libraries/ICSharpCode.Build.Tasks/Test/NormalMonoErrorParseTestFixture.cs

5
data/templates/file/VBNet/FileCategorySortOrder.xml

@ -0,0 +1,5 @@ @@ -0,0 +1,5 @@
<Categories>
<Category Name="VB">
<Category Name="${res:Templates.File.Categories.WindowsApplications}" SortOrder="10"/>
</Category>
</Categories>

39
data/templates/file/VBNet/VBNet.Gtk.Window.xft

@ -0,0 +1,39 @@ @@ -0,0 +1,39 @@
<?xml version="1.0"?>
<Template author="Matt Ward" version="1.0">
<Config
name = "${res:Templates.File.GtkSharpWindow.Name}"
icon = "VBNet.File.Form"
category = "VB"
subcategory = "Mono"
defaultname = "Window${Number}.vb"
language = "VB"/>
<Description>${res:Templates.File.GtkSharpWindow.Description}</Description>
<!--
Special new file templates:
${StandardNamespace} -> Standardnamespace of the current project or FileNameWithoutExtension
${FullName} -> Full generated path name
${FileName} -> File name with extension
${FileNameWithoutExtension} -> File name without extension
${Extension} -> Extension in the form ".cs"
${Path} -> Full path of the file
${ClassName} -> Class name (generally FileNameWithoutExtension w/o 'bad' characters)
-->
<Files>
<File name="${FullName}" language="VBNet"><![CDATA[${StandardHeader.VBNET}
Imports Gtk
Public Class ${ClassName}
Inherits Window
Public Sub New
MyBase.New("${ClassName}")
End Sub
End Class
]]></File>
</Files>
<AdditionalOptions/>
</Template>

107
data/templates/project/VBNet/GtkProject.xpt

@ -0,0 +1,107 @@ @@ -0,0 +1,107 @@
<?xml version="1.0"?>
<Template originator = "Matt Ward"
created = "15/02/2006"
lastModified = "15/02/2006">
<!-- Template Header -->
<TemplateConfiguration>
<Name>${res:Templates.Project.GtkSharpProject.Name}</Name>
<Category>VBNet</Category>
<Subcategory>Mono</Subcategory>
<Icon>VBNet.Project.Form</Icon>
<LanguageName>VBNet</LanguageName>
<Description>${res:Templates.Project.GtkSharpProject.Description}</Description>
</TemplateConfiguration>
<!-- Actions -->
<Actions>
<Open filename = "MainWindow.vb"/>
</Actions>
<Solution name = "${ProjectName}" directory = ".">
<Options>
<StartupProject>${ProjectName}</StartupProject>
</Options>
<Project name = "${ProjectName}" directory = ".">
<Options OutputType = "WinExe"/>
<PropertyGroup>
<TargetFrameworkVersion>Mono v1.1</TargetFrameworkVersion>
</PropertyGroup>
<Imports clear="True">
<Import Project="$(SharpDevelopBinPath)\SharpDevelop.Build.VisualBasic.targets" />
</Imports>
<ProjectItems>
<Reference Include="atk-sharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
<Reference Include="gdk-sharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
<Reference Include="glib-sharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
<Reference Include="gtk-sharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
<Reference Include="pango-sharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
<Reference Include="System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<Import Include="Microsoft.VisualBasic" />
<Import Include="System" />
<Import Include="System.Collections" />
</ProjectItems>
<Files>
<File name="MainWindow.vb"><![CDATA[${StandardHeader.VBNET}
Imports Gtk
Imports System
Public Class MainWindow
Inherits Window
Public Sub New
MyBase.New("MainWindow")
AddHandler MyBase.DeleteEvent, AddressOf MainWindowDelete
Me.ShowAll()
End Sub
Public Shared Sub Main
Application.Init()
Dim mainWindow As New MainWindow
Application.Run()
End Sub
Private Sub MainWindowDelete(ByVal o As Object, ByVal args As DeleteEventArgs)
Application.Quit()
args.RetVal = true
End Sub
End Class
]]></File>
<File name="AssemblyInfo.vb">
<![CDATA[Imports System.Reflection
Imports 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("1.0.*")>
]]></File>
</Files>
</Project>
</Solution>
</Template>

5
data/templates/project/VBNet/ProjectCategorySortOrder.xml

@ -0,0 +1,5 @@ @@ -0,0 +1,5 @@
<Categories>
<Category Name="VBNet">
<Category Name="${res:Templates.File.Categories.WindowsApplications}" SortOrder="10"/>
</Category>
</Categories>

16
src/Libraries/ICSharpCode.Build.Tasks/ICSharpCode.Build.Tasks.sln

@ -1,8 +1,22 @@ @@ -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

94
src/Libraries/ICSharpCode.Build.Tasks/Project/CompilerCommandLineArguments.cs

@ -9,16 +9,16 @@ using Microsoft.Build.Framework; @@ -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 @@ -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 @@ -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 @@ -117,10 +88,13 @@ namespace ICSharpCode.Build.Tasks
}
}
void AppendTarget(string targetType)
/// <summary>
/// Appends and lower cases the switch's value if it is not null.
/// </summary>
public void AppendLowerCaseSwitchIfNotNull(string switchName, string parameter)
{
if (targetType != null) {
AppendSwitch("-target:", targetType.ToLowerInvariant());
if (parameter != null) {
AppendSwitch(switchName, parameter.ToLower(CultureInfo.InvariantCulture));
}
}
}

2
src/Libraries/ICSharpCode.Build.Tasks/Project/Gmcs.cs

@ -13,7 +13,7 @@ namespace ICSharpCode.Build.Tasks @@ -13,7 +13,7 @@ namespace ICSharpCode.Build.Tasks
/// <summary>
/// MSBuild task for Mono's GMCS.
/// </summary>
public class Gmcs : MonoCompilerTask
public class Gmcs : MonoCSharpCompilerTask
{
protected override string ToolName {
get {

8
src/Libraries/ICSharpCode.Build.Tasks/Project/ICSharpCode.Build.Tasks.csproj

@ -42,7 +42,7 @@ @@ -42,7 +42,7 @@
<Compile Include="CompilerCommandLineArguments.cs" />
<Compile Include="MonoCompiler.cs" />
<Compile Include="ICompilerResultsParser.cs" />
<Compile Include="CompilerResultsParser.cs" />
<Compile Include="MonoCSharpCompilerResultsParser.cs" />
<Compile Include="Gmcs.cs" />
<None Include="SharpDevelop.Build.Mono.Gmcs.targets">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
@ -61,6 +61,12 @@ @@ -61,6 +61,12 @@
<None Include="SharpDevelop.Build.VisualBasic.targets">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<Compile Include="Mbas.cs" />
<None Include="SharpDevelop.Build.Mono.Mbas.targets">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<Compile Include="MonoBasicCompilerResultsParser.cs" />
<Compile Include="MonoCSharpCompilerTask.cs" />
</ItemGroup>
<ItemGroup>
<Content Include="SharpDevelop.Build.CSharp.targets">

2
src/Libraries/ICSharpCode.Build.Tasks/Project/ICompilerResultsParser.cs

@ -12,6 +12,6 @@ namespace ICSharpCode.Build.Tasks @@ -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);
}
}

142
src/Libraries/ICSharpCode.Build.Tasks/Project/Mbas.cs

@ -0,0 +1,142 @@ @@ -0,0 +1,142 @@
// <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 Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
using System;
using System.CodeDom.Compiler;
namespace ICSharpCode.Build.Tasks
{
/// <summary>
/// MSBuild task for Mono's Visual Basic compiler Mbas.
/// </summary>
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;
}
}
/// <summary>
/// Command line arguments that will be passed to the compiler.
/// </summary>
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);
}
}
}

2
src/Libraries/ICSharpCode.Build.Tasks/Project/Mcs.cs

@ -13,7 +13,7 @@ namespace ICSharpCode.Build.Tasks @@ -13,7 +13,7 @@ namespace ICSharpCode.Build.Tasks
/// <summary>
/// MSBuild task for Mono's MCS.
/// </summary>
public class Mcs : MonoCompilerTask
public class Mcs : MonoCSharpCompilerTask
{
protected override string ToolName {
get {

65
src/Libraries/ICSharpCode.Build.Tasks/Project/MonoBasicCompilerResultsParser.cs

@ -0,0 +1,65 @@ @@ -0,0 +1,65 @@
// <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.CodeDom.Compiler;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
namespace ICSharpCode.Build.Tasks
{
public class MonoBasicCompilerResultsParser : ICompilerResultsParser
{
public const string NormalErrorPattern = @"(?<file>.*)\((?<line>\d+),(?<column>\d+)\)\s+(?<error>\w+)\s+(?<number>[\d\w]+):\s+(?<message>.*)";
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;
}
}
}

8
src/Libraries/ICSharpCode.Build.Tasks/Project/CompilerResultsParser.cs → src/Libraries/ICSharpCode.Build.Tasks/Project/MonoCSharpCompilerResultsParser.cs

@ -13,7 +13,7 @@ using System.Text.RegularExpressions; @@ -13,7 +13,7 @@ using System.Text.RegularExpressions;
namespace ICSharpCode.Build.Tasks
{
public class CompilerResultsParser : ICompilerResultsParser
public class MonoCSharpCompilerResultsParser : ICompilerResultsParser
{
public const string NormalErrorPattern = @"(?<file>.*)\((?<line>\d+),(?<column>\d+)\):\s+(?<error>\w+)\s+(?<number>[\d\w]+):\s+(?<message>.*)";
public const string GeneralErrorPattern = @"(?<error>.+?)\s+(?<number>[\d\w]+?):\s+(?<message>.*)";
@ -21,16 +21,16 @@ namespace ICSharpCode.Build.Tasks @@ -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();

158
src/Libraries/ICSharpCode.Build.Tasks/Project/MonoCSharpCompilerTask.cs

@ -0,0 +1,158 @@ @@ -0,0 +1,158 @@
// <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.Build.Tasks
{
/// <summary>
/// Base class for the Mcs and Gmcs tasks.
/// </summary>
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();
}
}
}

2
src/Libraries/ICSharpCode.Build.Tasks/Project/MonoCompiler.cs

@ -35,7 +35,7 @@ namespace ICSharpCode.Build.Tasks @@ -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);

163
src/Libraries/ICSharpCode.Build.Tasks/Project/MonoCompilerTask.cs

@ -13,28 +13,22 @@ using System.CodeDom.Compiler; @@ -13,28 +13,22 @@ using System.CodeDom.Compiler;
namespace ICSharpCode.Build.Tasks
{
/// <summary>
/// Base class task for the mono compilers mcs and gmcs.
/// Base class task for the mono compilers mcs, gmcs and mbas.
/// </summary>
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 @@ -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 @@ -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 @@ -102,7 +86,7 @@ namespace ICSharpCode.Build.Tasks
debugType = value;
}
}
public string DefineConstants {
get {
return defineConstants;
@ -112,16 +96,6 @@ namespace ICSharpCode.Build.Tasks @@ -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 @@ -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 @@ -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 @@ -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 @@ -220,7 +140,7 @@ namespace ICSharpCode.Build.Tasks
noLogo = value;
}
}
public bool NoStandardLib {
get {
return noStandardLib;
@ -229,6 +149,7 @@ namespace ICSharpCode.Build.Tasks @@ -229,6 +149,7 @@ namespace ICSharpCode.Build.Tasks
noStandardLib = value;
}
}
public bool Optimize {
get {
@ -307,32 +228,17 @@ namespace ICSharpCode.Build.Tasks @@ -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 @@ -353,18 +259,29 @@ namespace ICSharpCode.Build.Tasks
return errorCount == 0;
}
/// <summary>
/// Determines whether the warning level property has been set.
/// </summary>
protected bool IsWarningLevelSet {
get {
return warningLevelSet;
}
}
/// <summary>
/// Command line arguments that will be passed to the compiler.
/// </summary>
protected virtual string GenerateCommandLineArguments()
{
CompilerCommandLineArguments args = new CompilerCommandLineArguments(this);
return args.ToString();
return String.Empty;
}
/// <summary>
/// Gets the parser that handles the compiler output.
/// </summary>
protected virtual ICompilerResultsParser GetCompilerResultsParser()
{
return new CompilerResultsParser();
return null;
}
}
}

2
src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.Mono.Gmcs.targets

@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@
AssemblyFile="$(SharpDevelopBinPath)\ICSharpCode.Build.Tasks.dll"/>
<PropertyGroup>
<MSBuildAllProjects>$(MSBuildAllProjects);$(SharpDevelopBinPath)\SharpDevelop.Build.Mono.targets</MSBuildAllProjects>
<MSBuildAllProjects>$(MSBuildAllProjects);$(SharpDevelopBuildBinPath)\SharpDevelop.Build.Mono.Gmcs.targets</MSBuildAllProjects>
<DefaultLanguageSourceExtension>.cs</DefaultLanguageSourceExtension>
<Language>C#</Language>
</PropertyGroup>

114
src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.Mono.Mbas.targets

@ -0,0 +1,114 @@ @@ -0,0 +1,114 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
<Import Project="$(SharpDevelopBinPath)\SharpDevelop.Build.Common.targets" />
<UsingTask TaskName="ICSharpCode.Build.Tasks.Mbas"
AssemblyFile="$(SharpDevelopBinPath)\ICSharpCode.Build.Tasks.dll"/>
<UsingTask TaskName="ICSharpCode.Build.Tasks.GetMonoFrameworkPath"
AssemblyFile="$(SharpDevelopBinPath)\ICSharpCode.Build.Tasks.dll"/>
<UsingTask TaskName="ICSharpCode.Build.Tasks.GetMonoFrameworkSdkPath"
AssemblyFile="$(SharpDevelopBinPath)\ICSharpCode.Build.Tasks.dll"/>
<UsingTask TaskName="ICSharpCode.Build.Tasks.AddMonoAssemblySearchPaths"
AssemblyFile="$(SharpDevelopBinPath)\ICSharpCode.Build.Tasks.dll"/>
<PropertyGroup>
<MSBuildAllProjects>$(MSBuildAllProjects);$(SharpDevelopBuildBinPath)\SharpDevelop.Build.Mono.Mbas.targets</MSBuildAllProjects>
<DefaultLanguageSourceExtension>.vb</DefaultLanguageSourceExtension>
<Language>VB</Language>
</PropertyGroup>
<!-- Override AssemblySearchPaths property and remove Microsoft specific search paths -->
<PropertyGroup>
<AssemblySearchPaths>
{CandidateAssemblyFiles};
$(ReferencePath);
{HintPathFromItem};
{TargetFrameworkDirectory};
{MonoGAC};
{RawFileName};
$(OutputPath)
</AssemblySearchPaths>
</PropertyGroup>
<Target Name="GetFrameworkPaths">
<!-- Get the path to the target Mono Framework directory. -->
<GetMonoFrameworkPath TargetFrameworkVersion="$(TargetFrameworkVersion)">
<Output TaskParameter="Path" PropertyName="TargetFrameworkDirectory"/>
<Output TaskParameter="Path" ItemName="_TargetFrameworkDirectoryItem"/>
</GetMonoFrameworkPath>
<!-- Get the path to the target the Mono SDK directory. -->
<GetMonoFrameworkSDKPath>
<Output TaskParameter="Path" PropertyName="TargetFrameworkSDKDirectory"/>
<Output TaskParameter="Path" ItemName="_TargetFrameworkSDKDirectoryItem"/>
</GetMonoFrameworkSDKPath>
</Target>
<!-- Modify what the ResolveAssemblyReferences tasks depends on so the
AssemblySearchPaths can be modified to use the Mono GAC -->
<PropertyGroup>
<ResolveAssemblyReferencesDependsOn>
GetFrameworkPaths;
GetRedistLists;
PrepareForBuild;
AddMonoAssemblySearchPaths
</ResolveAssemblyReferencesDependsOn>
</PropertyGroup>
<Target Name="AddMonoAssemblySearchPaths">
<AddMonoAssemblySearchPaths
Assemblies="@(Reference)"
Paths="$(AssemblySearchPaths)">
<Output TaskParameter="Paths" PropertyName="AssemblySearchPaths"/>
</AddMonoAssemblySearchPaths>
</Target>
<Target
Name="CoreCompile"
Inputs="$(MSBuildAllProjects);
@(Compile);
@(ManifestResourceWithNoCulture);
$(ApplicationIcon);
$(AssemblyOriginatorKeyFile);
@(ManifestNonResxWithNoCultureOnDisk);
@(ReferencePath);
@(CompiledLicenseFile);
@(EmbeddedDocumentation);
@(CustomAdditionalCompileInputs)"
Outputs="@(DocFileItem);
@(IntermediateAssembly);
$(NonExistentFile);
@(CustomAdditionalCompileOutputs)"
DependsOnTargets="$(CoreCompileDependsOn)"
>
<Mbas
AdditionalLibPaths="$(AdditionalLibPaths)"
AddModules="@(AddModules)"
CodePage="$(CodePage)"
DebugType="$(DebugType)"
DefineConstants="$(FinalDefineConstants)"
DisabledWarnings="$(NoWarn)"
EmitDebugInformation="$(DebugSymbols)"
Imports="@(Import)"
MainEntryPoint="$(StartupObject)"
NoStandardLib="$(NoStdLib)"
NoWarnings="$(_NoWarnings)"
OptionCompare="$(OptionCompare)"
OptionExplicit="$(OptionExplicit)"
OptionStrict="$(OptionStrict)"
OutputAssembly="@(IntermediateAssembly)"
References="@(ReferencePath)"
RemoveIntegerChecks="$(RemoveIntegerChecks)"
Resources="@(ManifestResourceWithNoCulture);@(ManifestNonResxWithNoCultureOnDisk);@(CompiledLicenseFile)"
ResponseFiles="$(CompilerResponseFile)"
RootNamespace="$(RootNamespace)"
Sources="@(Compile)"
TargetType="$(OutputType)"
ToolPath="$(MbasToolPath)"
TreatWarningsAsErrors="$(TreatWarningsAsErrors)"
WarningLevel="$(WarningLevel)"
/>
</Target>
</Project>

2
src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.Mono.Mcs.targets

@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@
AssemblyFile="$(SharpDevelopBinPath)\ICSharpCode.Build.Tasks.dll"/>
<PropertyGroup>
<MSBuildAllProjects>$(MSBuildAllProjects);$(SharpDevelopBinPath)\SharpDevelop.Build.Mono.targets</MSBuildAllProjects>
<MSBuildAllProjects>$(MSBuildAllProjects);$(SharpDevelopBuildBinPath)\SharpDevelop.Build.Mono.Mcs.targets</MSBuildAllProjects>
<DefaultLanguageSourceExtension>.cs</DefaultLanguageSourceExtension>
<Language>C#</Language>
</PropertyGroup>

5
src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.VisualBasic.targets

@ -133,7 +133,8 @@ @@ -133,7 +133,8 @@
Win32Icon="$(ApplicationIcon)"
Win32Resource="$(Win32Resource)"
/>
</Target>
<!-- Mono imports -->
<Import Condition=" '$(SharpDevelopUseMicrosoftFramework)' != 'true' " Project="$(SharpDevelopBinPath)\SharpDevelop.Build.Mono.Mbas.targets"/>
</Project>

273
src/Libraries/ICSharpCode.Build.Tasks/Test/CompilerCommandLineTestFixture.cs

@ -1,273 +0,0 @@ @@ -1,273 +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.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());
}
}
}

2
src/Libraries/ICSharpCode.Build.Tasks/Test/GeneralErrorParseTestFixture.cs

@ -22,7 +22,7 @@ namespace ICSharpCode.Build.Tasks.Tests @@ -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);
}

6
src/Libraries/ICSharpCode.Build.Tasks/Test/ICSharpCode.Build.Tasks.Tests.csproj

@ -43,10 +43,14 @@ @@ -43,10 +43,14 @@
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="CompilerCommandLineTestFixture.cs" />
<Compile Include="MonoCSharpCompilerCommandLineTestFixture.cs" />
<Compile Include="AssemblyInfo.cs" />
<Compile Include="NormalMonoErrorParseTestFixture.cs" />
<Compile Include="GeneralErrorParseTestFixture.cs" />
<Compile Include="MonoBasicCommandLineTestFixture.cs" />
<Compile Include="MockMbas.cs" />
<Compile Include="NormalMbasErrorParseTestFixture.cs" />
<Compile Include="MockMonoCSharpCompilerTask.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Project\ICSharpCode.Build.Tasks.csproj">

28
src/Libraries/ICSharpCode.Build.Tasks/Test/MockMbas.cs

@ -0,0 +1,28 @@ @@ -0,0 +1,28 @@
// <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.Build.Tasks;
using System;
namespace ICSharpCode.Build.Tasks.Tests
{
/// <summary>
/// Helper class that allows us to test protected methods of the
/// Mbas class.
/// </summary>
public class MockMbas : Mbas
{
/// <summary>
/// Generates the Mbas command line arguments via the protected
/// GenerateCommandLineArguments method.
/// </summary>
public string GetCommandLine()
{
return base.GenerateCommandLineArguments();
}
}
}

34
src/Libraries/ICSharpCode.Build.Tasks/Test/MockMonoCSharpCompilerTask.cs

@ -0,0 +1,34 @@ @@ -0,0 +1,34 @@
// <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.Build.Tasks;
using System;
namespace ICSharpCode.Build.Tasks.Tests
{
/// <summary>
/// Helper class that allows us to test protected methods of the
/// MonoCSharpCompilerTask class.
/// </summary>
public class MockMonoCSharpCompilerTask : MonoCSharpCompilerTask
{
/// <summary>
/// Generates the MonoCSharpCompilerTask command line arguments via the
/// protected GenerateCommandLineArguments method.
/// </summary>
public string GetCommandLine()
{
return base.GenerateCommandLineArguments();
}
protected override string ToolName {
get {
return "MonoCSharp.exe";
}
}
}
}

206
src/Libraries/ICSharpCode.Build.Tasks/Test/MonoBasicCommandLineTestFixture.cs

@ -0,0 +1,206 @@ @@ -0,0 +1,206 @@
// <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.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());
}
}
}

231
src/Libraries/ICSharpCode.Build.Tasks/Test/MonoCSharpCompilerCommandLineTestFixture.cs

@ -0,0 +1,231 @@ @@ -0,0 +1,231 @@
// <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.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());
}
}
}

65
src/Libraries/ICSharpCode.Build.Tasks/Test/NormalMbasErrorParseTestFixture.cs

@ -0,0 +1,65 @@ @@ -0,0 +1,65 @@
// <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.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}"));
}
}
}

2
src/Libraries/ICSharpCode.Build.Tasks/Test/NormalMonoErrorParseTestFixture.cs

@ -22,7 +22,7 @@ namespace ICSharpCode.Build.Tasks.Tests @@ -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);
}

Loading…
Cancel
Save