-
-
Notifications
You must be signed in to change notification settings - Fork 652
Open
Description
I want to write an AssemblyDefinition with symbols embedded to a stream. I am doing:
definition.Write(byteStream, new() {
WriteSymbols = true
});But this throws an exception:
Mono.ArgumentNullOrEmptyException: Argument null or empty (Parameter 'fileName')
at Mono.Cecil.Mixin.CheckFileName(String fileName)
at Mono.Cecil.Cil.EmbeddedPortablePdbWriterProvider.GetSymbolWriter(ModuleDefinition module, String fileName)
at Mono.Cecil.Cil.DefaultSymbolWriterProvider.GetSymbolWriter(ModuleDefinition module, String fileName)
at Mono.Cecil.ModuleWriter.GetSymbolWriter(ModuleDefinition module, String fq_name, ISymbolWriterProvider symbol_writer_provider, WriterParameters parameters)
at Mono.Cecil.ModuleWriter.Write(ModuleDefinition module, Disposable`1 stream, WriterParameters parameters)
at Mono.Cecil.ModuleWriter.WriteModule(ModuleDefinition module, Disposable`1 stream, WriterParameters parameters)
at Mono.Cecil.ModuleDefinition.Write(Stream stream, WriterParameters parameters)
at Mono.Cecil.AssemblyDefinition.Write(Stream stream, WriterParameters parameters)
...
I have not tested this, but I believe the call to CheckFileName in EmbeddedPortablePdbWriterProvider.GetSymbolWriter is not necessary, as I don't think the file name is used by EmbeddedPortablePdbWriter.
cecil/Mono.Cecil.Cil/PortablePdb.cs
Lines 485 to 493 in 56d4409
| public ISymbolWriter GetSymbolWriter (ModuleDefinition module, string fileName) | |
| { | |
| Mixin.CheckModule (module); | |
| Mixin.CheckFileName (fileName); | |
| var stream = new MemoryStream (); | |
| var pdb_writer = (PortablePdbWriter) new PortablePdbWriterProvider ().GetSymbolWriter (module, stream); | |
| return new EmbeddedPortablePdbWriter (stream, pdb_writer); | |
| } |
Because of this check, it seems to be impossible to write embedded symbols without writing into a file.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels