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); }