int GenPinvokeTable(String[] args) { var modules = new Dictionary <string, string> (); foreach (var module in args[1].Split(',')) { modules [module] = module; } args = args.Skip(2).ToArray(); #if NETFRAMEWORK var assemblies = new List <AssemblyDefinition> (); foreach (var fname in args) { assemblies.Add(AssemblyDefinition.ReadAssembly(fname)); } var generator = new PInvokeTableGenerator(); generator.Run(assemblies, modules); #else var generator = new PInvokeTableGenerator(); generator.OutputPath = Path.GetTempFileName(); generator.GenPInvokeTable(modules.Keys.ToArray(), args.ToArray()); Console.WriteLine(File.ReadAllText(generator.OutputPath)); #endif return(0); }
int GenInterpToNative(String[] args) { if (args.Length < 2) { Usage(); return(1); } string outfileName = args [1]; args = args.Skip(2).ToArray(); var assemblies = new List <AssemblyDefinition> (); foreach (var fname in args) { assemblies.Add(AssemblyDefinition.ReadAssembly(fname)); } List <Pinvoke> pinvokes; List <PinvokeCallback> callbacks; PInvokeTableGenerator.CollectPInvokes(assemblies, out pinvokes, out callbacks); var gen = new InterpToNativeGenerator(); foreach (var pinvoke in pinvokes) { gen.AddSignature(pinvoke.Method); } using (var w = File.CreateText(outfileName)) { gen.Emit(w); } return(0); }
private void ExecuteInternal() { var pinvoke = new PInvokeTableGenerator(Log); var icall = new IcallTableGenerator(Log); IEnumerable <string> cookies = Enumerable.Concat( pinvoke.GenPInvokeTable(PInvokeModules, Assemblies !, PInvokeOutputPath !), icall.GenIcallTable(RuntimeIcallTableFile, Assemblies !, IcallOutputPath) ); var m2n = new InterpToNativeGenerator(Log); m2n.Generate(cookies, InterpToNativeOutputPath !); FileWrites = IcallOutputPath != null ? new string[] { PInvokeOutputPath, IcallOutputPath, InterpToNativeOutputPath } : new string[] { PInvokeOutputPath, InterpToNativeOutputPath }; }
int GenPinvokeTable(String[] args) { var modules = new Dictionary <string, string> (); foreach (var module in args[1].Split(',')) { modules [module] = module; } args = args.Skip(2).ToArray(); var assemblies = new List <AssemblyDefinition> (); foreach (var fname in args) { assemblies.Add(AssemblyDefinition.ReadAssembly(fname)); } var generator = new PInvokeTableGenerator(); generator.Run(assemblies, modules); return(0); }
int GenPinvokeTable(String[] args) { var modules = new Dictionary <string, string> (); foreach (var module in args[2].Split(',')) { modules [module] = module; } var files = args.Skip(3).ToArray(); #if NETFRAMEWORK throw new NotSupportedException($"pinvoke generation is not supported for netstandard2.0"); #else var generator = new PInvokeTableGenerator(); Console.WriteLine($"Generating to {args[1]}"); generator.OutputPath = args[1]; generator.GenPInvokeTable(modules.Keys.ToArray(), files.ToArray()); #endif return(0); }