From 916c752a0b28ab65764639da567779901d3d5a07 Mon Sep 17 00:00:00 2001 From: SushiHangover Date: Mon, 28 Dec 2015 21:19:13 -0800 Subject: [PATCH 1/2] Add missing Mono.Addins.ImportAddinAssembly for support dlls --- PlayScript.Addin/Properties/PlayScript.AddinInfo.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/PlayScript.Addin/Properties/PlayScript.AddinInfo.cs b/PlayScript.Addin/Properties/PlayScript.AddinInfo.cs index 19a013c..88faf82 100644 --- a/PlayScript.Addin/Properties/PlayScript.AddinInfo.cs +++ b/PlayScript.Addin/Properties/PlayScript.AddinInfo.cs @@ -15,4 +15,12 @@ [assembly:AddinDescription ("PlayScript and ActionScript Support for Xamarin Studio\n\nBy SushiHangover")] [assembly:AddinAuthor ("SushiHangover/RobertN")] - +[assembly:Mono.Addins.ImportAddinAssembly ("ICSharpCode.Decompiler.dll")] +[assembly:Mono.Addins.ImportAddinAssembly ("ICSharpCode.NRefactory.PlayScript.IKVM.dll")] +[assembly:Mono.Addins.ImportAddinAssembly ("ICSharpCode.NRefactory.PlayScript.Refactoring.dll")] +[assembly:Mono.Addins.ImportAddinAssembly ("ICSharpCode.NRefactory.PlayScript.Xml.dll")] +[assembly:Mono.Addins.ImportAddinAssembly ("ICSharpCode.NRefactory.PlayScript.dll")] +[assembly:Mono.Addins.ImportAddinAssembly ("IKVM.Reflection.dll")] +[assembly:Mono.Addins.ImportAddinAssembly ("Mono.Cecil.Mdb.dll")] +[assembly:Mono.Addins.ImportAddinAssembly ("Mono.Cecil.Pdb.dll")] +[assembly:Mono.Addins.ImportAddinAssembly ("Mono.Cecil.dll")] From b77c1983ae7c593a24c17b31b3e772a5447a6b41 Mon Sep 17 00:00:00 2001 From: SushiHangover Date: Mon, 28 Dec 2015 22:33:30 -0800 Subject: [PATCH 2/2] Name/Location of compiler: * psc (if not Windows) * psc.exe (if Windows) * 1) Alternative Framework / Runtime tool location * 2) Addin directory (within the "MonoDevelop.PlayScript.SupportPackages" subdir --- .../ActionScriptScriptLanguageBinding.cs | 2 +- ...cs => PlayScriptBindingCompilerManager.cs} | 28 +++++++++++++------ .../PlayScriptLanguageBinding.cs | 2 +- PlayScript.Addin/PlayScript.Addin.csproj | 5 +++- 4 files changed, 26 insertions(+), 11 deletions(-) rename PlayScript.Addin/MonoDevelop.PlayScript/{CSharpBindingCompilerManager.cs => PlayScriptBindingCompilerManager.cs} (96%) diff --git a/PlayScript.Addin/MonoDevelop.PlayScript/ActionScriptScriptLanguageBinding.cs b/PlayScript.Addin/MonoDevelop.PlayScript/ActionScriptScriptLanguageBinding.cs index 91bd0ab..b4a0a06 100644 --- a/PlayScript.Addin/MonoDevelop.PlayScript/ActionScriptScriptLanguageBinding.cs +++ b/PlayScript.Addin/MonoDevelop.PlayScript/ActionScriptScriptLanguageBinding.cs @@ -47,7 +47,7 @@ public bool IsSourceCodeFile (FilePath fileName) public BuildResult Compile (ProjectItemCollection projectItems, DotNetProjectConfiguration configuration, ConfigurationSelector configSelector, IProgressMonitor monitor) { - return CSharpBindingCompilerManager.Compile (projectItems, configuration, configSelector, monitor); + return PlayScriptBindingCompilerManager.Compile (projectItems, configuration, configSelector, monitor); } public ConfigurationParameters CreateCompilationParameters (XmlElement projectOptions) diff --git a/PlayScript.Addin/MonoDevelop.PlayScript/CSharpBindingCompilerManager.cs b/PlayScript.Addin/MonoDevelop.PlayScript/PlayScriptBindingCompilerManager.cs similarity index 96% rename from PlayScript.Addin/MonoDevelop.PlayScript/CSharpBindingCompilerManager.cs rename to PlayScript.Addin/MonoDevelop.PlayScript/PlayScriptBindingCompilerManager.cs index fbaa396..f78ec68 100644 --- a/PlayScript.Addin/MonoDevelop.PlayScript/CSharpBindingCompilerManager.cs +++ b/PlayScript.Addin/MonoDevelop.PlayScript/PlayScriptBindingCompilerManager.cs @@ -1,5 +1,5 @@ // -// CSharpBindingCompilerManager.cs +// PlayScriptBindingCompilerManager.cs // // Author: // Mike Krüger @@ -31,6 +31,7 @@ using System.Diagnostics; using System.Text.RegularExpressions; using System.Text; +using System.Runtime.InteropServices; using Mono.Addins; using MonoDevelop.Projects; @@ -45,8 +46,11 @@ namespace MonoDevelop.PlayScript { - static class CSharpBindingCompilerManager + static class PlayScriptBindingCompilerManager { + [DllImport ("libc")] + private static extern int system (string exec); + static void AppendQuoted (StringBuilder sb, string option, string val) { sb.Append ('"'); @@ -423,12 +427,20 @@ static string GetCompilerName (TargetRuntime runtime, TargetFramework fx) if (Platform.IsWindows) { psc_name += ".exe"; } - string csc = runtime.GetToolPath (fx, psc_name); - if (csc != null) - return csc; - csc = AddinManager.CurrentAddin.GetFilePath (psc_name); - if (csc != null) - return csc; + // Using a runtime that includes the playscript compiler? + string psc = runtime.GetToolPath (fx, psc_name); + if (psc != null) + return psc; + psc_name = Path.Combine ("MonoDevelop.PlayScript.SupportPackages", psc_name); + psc = AddinManager.CurrentAddin.GetFilePath (psc_name); + if (psc != null) { + // TODO: Fixme...Hack file perms on script as Addin system does not preserve them... + system (String.Format ("chmod u+x \"{0}\"", psc)); + return psc; + } + psc = AddinManager.CurrentAddin.GetFilePath (psc_name += ".exe"); + if (psc != null) + return psc; else { string message = GettextCatalog.GetString ("PlayScript compiler not found for {0}.", fx.Name); LoggingService.LogError (message); diff --git a/PlayScript.Addin/MonoDevelop.PlayScript/PlayScriptLanguageBinding.cs b/PlayScript.Addin/MonoDevelop.PlayScript/PlayScriptLanguageBinding.cs index f4ee411..b4241fe 100644 --- a/PlayScript.Addin/MonoDevelop.PlayScript/PlayScriptLanguageBinding.cs +++ b/PlayScript.Addin/MonoDevelop.PlayScript/PlayScriptLanguageBinding.cs @@ -47,7 +47,7 @@ public bool IsSourceCodeFile (FilePath fileName) public BuildResult Compile (ProjectItemCollection projectItems, DotNetProjectConfiguration configuration, ConfigurationSelector configSelector, IProgressMonitor monitor) { - return CSharpBindingCompilerManager.Compile (projectItems, configuration, configSelector, monitor); + return PlayScriptBindingCompilerManager.Compile (projectItems, configuration, configSelector, monitor); } public ConfigurationParameters CreateCompilationParameters (XmlElement projectOptions) diff --git a/PlayScript.Addin/PlayScript.Addin.csproj b/PlayScript.Addin/PlayScript.Addin.csproj index 648e0cf..1575eb4 100644 --- a/PlayScript.Addin/PlayScript.Addin.csproj +++ b/PlayScript.Addin/PlayScript.Addin.csproj @@ -124,7 +124,6 @@ - @@ -210,6 +209,7 @@ + @@ -401,6 +401,9 @@ MonoDevelop.PlayScript.SupportPackages\pscorlib_aot.dll.mdb PreserveNewest + + MonoDevelop.PlayScript.SupportPackages\psc +