C# 在Unity3D中是否有针对IL2Cpp构建的运行时代码编译解决方案?

C# 在Unity3D中是否有针对IL2Cpp构建的运行时代码编译解决方案?,c#,unity3d,runtime-compilation,C#,Unity3d,Runtime Compilation,我正在尝试在Unity3D中为IL2CPP build 64位Android在运行时编译C#代码 我有一个要动态编译和执行的代码字符串。 我尝试过的是: 但我要了解的是,以上所有内容都不能用于IL2Cpp构建 下面的代码是使用:上面提到的第二个Github repo执行的 CSScriptEngine engine = new CSScriptEngine(); engine.AddUsings("using UnityEngine; using System; using System.

我正在尝试在Unity3D中为IL2CPP build 64位Android在运行时编译C#代码

我有一个要动态编译和执行的代码字符串。 我尝试过的是:




  • 但我要了解的是,以上所有内容都不能用于IL2Cpp构建

    下面的代码是使用:上面提到的第二个Github repo执行的

    CSScriptEngine engine = new CSScriptEngine();
    engine.AddUsings("using UnityEngine; using System; using System.Collections.Generic;");
    engine.AddOnCompilationFailedHandler(OnCompilationFail);
    IScript result = engine.CompileCode(@codeToConvert);
    
    第二个插件:

    AndroidPlayer(ADB@127.0.0.1:34999) ArgumentException: Invalid path
      at System.IO.Path.GetDirectoryName (System.String path) [0x00000] in <00000000000000000000000000000000>:0 
      at Mono.CSharp.DynamicLoader..ctor (Mono.CSharp.ReflectionImporter importer, Mono.CSharp.CompilerContext compiler) [0x00000] in <00000000000000000000000000000000>:0 
      at Mono.CSharp.Evaluator.Init () [0x00000] in <00000000000000000000000000000000>:0 
      at Mono.CSharp.Evaluator.Compile (System.String input, Mono.CSharp.CompiledMethod& compiled) [0x00000] in <00000000000000000000000000000000>:0 
      at Mono.CSharp.Evaluator.Evaluate (System.String input, System.Object& result, System.Boolean& result_set) [0x00000] in <00000000000000000000000000000000>:0 
      at Mono.CSharp.Evaluator.Run (System.String statement) [0x00000] in <00000000000000000000000000000000>:0 
      at UCompile.MonoEvaluator.Run (System.String scriptText) [0x00000] in <00000000000000000000000000000000>:0 
      at UCompile.CompilationUnit.Run (System.String code) [0x00000] in <00000000000000000000000000000000>:0 
      at UCompile.CSScriptEngine.AddUsings (System.String usings) [0x00000] in <00000000000000000000000000000000>:0 
      at CheckVersion.Operation_completed (UnityEngine.AsyncOperation obj) [0x00000] in <00000000000000000000000000000000>:0 
      at System.Action`1[T].Invoke (T obj) [0x00000] in <00000000000000000000000000000000>:0 
      at UnityEngine.AsyncOperation.InvokeCompletionEvent () [0x00000] in <00000000000000000000000000000000>:0
    
    AndroidPlayer(ADB@127.0.0.1:34999)ArgumentException:无效路径
    位于:0中的System.IO.Path.GetDirectoryName(System.String路径)[0x00000]处
    位于Mono.CSharp.DynamicLoader..ctor(Mono.CSharp.ReflectionImporter导入器,Mono.CSharp.CompilerContext编译器)[0x00000]中:0
    在0中的Mono.CSharp.Evaluator.Init()[0x00000]处
    在:0中的Mono.CSharp.Evaluator.Compile(System.String输入,Mono.CSharp.CompiledMethod&compiled)[0x00000]处
    在Mono.CSharp.Evaluator.Evaluate(System.String输入、System.Object和result、System.Boolean和result_set)[0x00000]中:0
    在0中的Mono.CSharp.Evaluator.Run(System.String语句)[0x00000]处
    在:0中的UCompile.MonoEvaluator.Run(System.String scriptText)[0x00000]处
    在UCompile.CompilationUnit.Run(System.String代码)[0x00000]中:0
    在:0中的UCompile.CSScriptEngine.AddUsings(System.String usings)[0x00000]处
    在CheckVersion.Operation_完成时(UnityEngine.AsyncOperation obj)[0x00000]位于:0
    在System.Action`1[T]。在以下位置调用(T obj)[0x00000]:0
    在:0中的UnityEngine.AsyncOperation.InvokeCompletionEvent()[0x00000]处