diff --git a/src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.csproj b/src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.csproj
index 13839162f5..0d75646c31 100644
--- a/src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.csproj
+++ b/src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.csproj
@@ -16,6 +16,8 @@
4
false
..\..\..\..\..\..\AddIns\AddIns\BackendBindings\BooBinding\
+ $(MSBuildProjectDirectory)\PostBuildEvent.bat "$(MSBuildProjectDirectory)"
+ OnSuccessfulBuild
False
@@ -107,6 +109,7 @@
NRefactoryToBooConverter
True
+
\ No newline at end of file
diff --git a/src/AddIns/BackendBindings/Boo/BooBinding/Project/PostBuildEvent.bat b/src/AddIns/BackendBindings/Boo/BooBinding/Project/PostBuildEvent.bat
new file mode 100644
index 0000000000..bd65082701
--- /dev/null
+++ b/src/AddIns/BackendBindings/Boo/BooBinding/Project/PostBuildEvent.bat
@@ -0,0 +1,9 @@
+REM TODO: Replace this batch file with a ".booproj" MsBuild project
+pushd "%1\..\..\RequiredLibraries"
+booc Boo.Microsoft.Build.Tasks.boo -t:library -o:Boo.Microsoft.Build.Tasks.dll -r:Microsoft.Build.Framework -r:Microsoft.Build.Tasks -r:Microsoft.Build.Utilities
+@IF %ERRORLEVEL% NEQ 0 GOTO BooPostBuildEventEnd
+popd
+copy "%1\..\..\RequiredLibraries\booc.*" .
+copy "%1\..\..\RequiredLibraries\*.targets" .
+copy "%1\..\..\RequiredLibraries\Boo.Microsoft.Build.Tasks.dll" .
+:BooPostBuildEventEnd
diff --git a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooProject.cs b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooProject.cs
index 999b6cbf30..72bc5b9c6e 100644
--- a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooProject.cs
+++ b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooProject.cs
@@ -7,6 +7,7 @@
using System;
using System.ComponentModel;
+using System.IO;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project;
@@ -16,21 +17,32 @@ namespace Grunwald.BooBinding
{
public class BooProject : MSBuildProject
{
- public BooProject(string fileName, string projectName)
+ static bool initialized = false;
+
+ void Init()
{
- this.Name = projectName;
Language = "Boo";
LanguageProperties = BooLanguageProperties.Instance;
+ if (!initialized) {
+ initialized = true;
+ MSBuildEngine.CompileTaskNames.Add("booc");
+ MSBuildEngine.MsBuildProperties.Add("BooBinPath", Path.GetDirectoryName(typeof(BooProject).Assembly.Location));
+ }
+ }
+
+ public BooProject(string fileName, string projectName)
+ {
+ this.Name = projectName;
+ Init();
SetupProject(fileName);
IdGuid = BaseConfiguration["ProjectGuid"];
}
public BooProject(ProjectCreateInformation info)
{
- Language = "Boo";
- LanguageProperties = BooLanguageProperties.Instance;
+ Init();
Create(info);
- imports.Add("$(BooBinPath)\\MsBuild.Boo.Targets");
+ imports.Add("$(BooBinPath)\\Boo.Microsoft.Build.targets");
}
public override bool CanCompile(string fileName)
diff --git a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Templates/FormsProject.xpt b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Templates/FormsProject.xpt
index 2ed459f472..c41ef5b8b0 100644
--- a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Templates/FormsProject.xpt
+++ b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Templates/FormsProject.xpt
@@ -50,16 +50,16 @@ class MainForm(System.Windows.Forms.Form):
// not be able to load this method if it was changed manually.
def InitializeComponent():
// Form1
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
- this.ClientSize = new System.Drawing.Size(292, 266)
- this.Text = 'MainForm'
- this.Name = 'MainForm'
+ self.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
+ self.ClientSize = System.Drawing.Size(292, 266)
+ self.Text = 'MainForm'
+ self.Name = 'MainForm'
#endregion
Application.EnableVisualStyles()
-Application.Run(new MainForm())
+Application.Run(MainForm())
-}]]>
+]]>
Debug
AnyCPU
{17F4D7E0-6933-4C2E-8714-FD7E98D625D5}
- ..\..\..\..\src\AddIns\Misc\SubversionAddIn\Project\PostBuildEvent.bat
+ $(MSBuildProjectDirectory)\PostBuildEvent.bat "$(MSBuildProjectDirectory)"
8.0.50215
2.0
+ OnOutputUpdated
True
diff --git a/src/Main/Base/Project/Src/Project/MSBuildEngine.cs b/src/Main/Base/Project/Src/Project/MSBuildEngine.cs
index fa620c3cb2..e8d31069bf 100644
--- a/src/Main/Base/Project/Src/Project/MSBuildEngine.cs
+++ b/src/Main/Base/Project/Src/Project/MSBuildEngine.cs
@@ -30,12 +30,19 @@ namespace ICSharpCode.SharpDevelop.Project
/// The contents of the list can be changed by addins.
/// All names must be in lower case!
///
- public static readonly List CompileTaskNames = new List(new string[] {"csc", "vbc", "ilasm"});
+ public static readonly List CompileTaskNames;
///
/// Gets a list where addins can add additional properties for use in MsBuild.
///
- public static readonly List> MsBuildProperties = new List>();
+ public static readonly SortedList MsBuildProperties;
+
+ static MSBuildEngine()
+ {
+ CompileTaskNames = new List(new string[] {"csc", "vbc", "ilasm"});
+ MsBuildProperties = new SortedList();
+ MsBuildProperties.Add("SharpDevelopBinPath", Path.GetDirectoryName(typeof(MSBuildEngine).Assembly.Location));
+ }
MessageViewCategory messageView;
@@ -108,8 +115,6 @@ namespace ICSharpCode.SharpDevelop.Project
Environment.CurrentDirectory = Path.GetDirectoryName(buildFile);
BuildPropertyGroup properties = new BuildPropertyGroup();
- string location = Path.GetDirectoryName(typeof(MSBuildEngine).Assembly.Location);
- properties.SetProperty("SharpDevelopBinPath", location);
foreach (KeyValuePair entry in MsBuildProperties) {
properties.SetProperty(entry.Key, entry.Value);
}