diff --git a/tools/jnimarshalmethod-gen/App.cs b/tools/jnimarshalmethod-gen/App.cs index c8e69d5bd..0b4e404c3 100644 --- a/tools/jnimarshalmethod-gen/App.cs +++ b/tools/jnimarshalmethod-gen/App.cs @@ -19,7 +19,7 @@ class App : MarshalByRefObject { internal const string Name = "jnimarshalmethod-gen"; - static DirectoryAssemblyResolver resolver = new DirectoryAssemblyResolver (logger: (l, v) => { Console.WriteLine (v); }, loadDebugSymbols: true, loadReaderParameters: new ReaderParameters () { ReadSymbols = true }); + static DirectoryAssemblyResolver resolver = new DirectoryAssemblyResolver (logger: (l, v) => { Console.WriteLine (v); }, loadDebugSymbols: true, loadReaderParameters: new ReaderParameters () { ReadSymbols = true, InMemory = true }); static Dictionary definedTypes = new Dictionary (); static Dictionary typeMap = new Dictionary (); static public bool Debug; @@ -145,11 +145,13 @@ void ProcessAssemblies (List assemblies) var readWriteParameters = new ReaderParameters { AssemblyResolver = resolver, + InMemory = true, ReadSymbols = true, ReadWrite = true, }; var readWriteParametersNoSymbols = new ReaderParameters { AssemblyResolver = resolver, + InMemory = true, ReadSymbols = false, ReadWrite = true, }; @@ -347,7 +349,7 @@ void CreateMarshalMethodAssembly (string path) ColorWriteLine ($"Marshal method assembly '{assemblyName}' created", ConsoleColor.Cyan); var dstAssembly = resolver.GetAssembly (destPath); - var mover = new TypeMover (dstAssembly, ad, definedTypes, resolver); + var mover = new TypeMover (dstAssembly, ad, path, definedTypes, resolver); mover.Move (); if (!keepTemporary) diff --git a/tools/jnimarshalmethod-gen/TypeMover.cs b/tools/jnimarshalmethod-gen/TypeMover.cs index 083fdeb98..1186c9c19 100644 --- a/tools/jnimarshalmethod-gen/TypeMover.cs +++ b/tools/jnimarshalmethod-gen/TypeMover.cs @@ -13,14 +13,16 @@ public class TypeMover { AssemblyDefinition Source { get; } AssemblyDefinition Destination { get; } + string DestinationPath { get; } Dictionary Types { get; } MethodReference consoleWriteLine; - public TypeMover (AssemblyDefinition source, AssemblyDefinition destination, Dictionary types, DirectoryAssemblyResolver resolver) + public TypeMover (AssemblyDefinition source, AssemblyDefinition destination, string destinationPath, Dictionary types, DirectoryAssemblyResolver resolver) { Source = source; Destination = destination; + DestinationPath = destinationPath; Types = types; if (App.Debug) { @@ -49,7 +51,7 @@ public void Move () return; } - Destination.Write (new WriterParameters () { WriteSymbols = Destination.MainModule.HasSymbols }); + Destination.Write (DestinationPath, new WriterParameters () { WriteSymbols = Destination.MainModule.HasSymbols }); if (App.Verbose) App.ColorWriteLine ($"Wrote updated {Destination.MainModule.FileName} assembly", ConsoleColor.Cyan);