Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Learn more about F# at http://fsharp.net
- //type public FSCom () =
- // inherit UnityEngine.MonoBehaviour()
- // member public b.mx x = x
- // member public x.Start () = Debug.Log("lala")
- namespace FSGCOM
- module _Gatherer =
- open System
- open System.IO
- open System.CodeDom.Compiler
- open Microsoft.FSharp.Compiler.CodeDom
- open UnityEngine
- //let FindAllInCurrentDir (filetype:String) : string array =
- // System.IO.Directory.GetFiles("Assets/",filetype,SearchOption.AllDirectories)
- //let DumpAllFiles (files : string array) = for file in files do Console.WriteLine(file)
- let CompileFiles (files :string array) =
- if(File.Exists(@"Assets/Assembly/scripts.dll")) then File.Delete(@"Assets/Assembly/scripts.dll")
- let mutable compiler = new Microsoft.FSharp.Compiler.CodeDom.FSharpCodeProvider()
- let mutable _params = new CompilerParameters([|"System";"System.Core";"Assets/Assembly/UnityEngine.dll";|])
- _params.IncludeDebugInformation <- true
- _params.OutputAssembly <- @"Assets/Assembly/scripts.dll"
- let mutable res:System.Object = compiler.CompileAssemblyFromFile(_params, files) :> System.Object
- let mutable Output = res.GetType().GetProperty("Output")
- let mutable Erros = res.GetType().GetProperty("Errors")
- let mutable assembly:Reflection.Assembly = res.GetType().GetProperty("CompiledAssembly").GetValue(res,Array.empty<System.Object>) :?> Reflection.Assembly
- for logmessage in (Output.GetValue(res,Array.empty<System.Object>) :?> System.Collections.Specialized.StringCollection) do Debug.Log(logmessage)
- for error in (Erros.GetValue(res,Array.empty<System.Object> ) :?> System.Collections.CollectionBase) do Debug.LogError(error)
- //Debug.Log(assembly)
- //assembly.GetModule("scripts.dll").GetTypes().[0].GetMethod("Start").Invoke(null,Array.empty<System.Object>)|>ignore
- //for _method:Reflection.MethodInfo in assembly.GetModule("scripts.dll").GetTypes().[2].GetMethods() do Debug.Log(_method.Name)
- //Debug.Log(res.PathToAssembly)
- //Debug.Log(res.CompiledAssembly.FullName)
- //Console.WriteLine(res.PathToAssembly)
- //Console.WriteLine(res.CompiledAssembly.FullName)
- //for t:System.Type in assembly.GetModule("scripts.dll").GetTypes() do for mi:Reflection.MethodInfo in t.GetMethods() do Debug.Log(t.ToString()+"|"+mi.ToString())
- //t.gameObject.AddComponent(assembly.GetModule("scripts.dll").GetTypes().[2])|>ignore
- res
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement