Open KevinRansom opened 8 years ago
The plan has been to use a new portable debug info format for cross-plat. Talk to @tmat about the best way to move F# compiler over to it.
There are no plans to bring the Windows managed .pdbs cross-plat. Also, Reflection.Emit is limited for in-memory only in .NET Core. There are no plans to extend it to produce files on disk.
@jkotas I believe the question is rather whether in-memory assemblies emitted by Ref.Emit are debuggable on CoreCLR on Linux/Mac.
@KevinRansom Does F# save the Ref.Emit'd assemblies to disk for later loading?
assemblies emitted by Ref.Emit are debuggable on CoreCLR on Linux/Mac
I do not think it is limited to Linux/Mac - the .NET Core Ref.Emit surface does not include the APIs to produce symbols, across platforms. The story for debuggable dynamically emitted assemblies in .NET Core has been to use AssemblyLoadContext.LoadFromStream(System.IO.Stream assembly, System.IO.Stream assemblySymbols)
.
Oh, I see. So there is no way how to emit debuggable dynamic assembly thru Reflection.Emit? Looking at System.Reflection.Emit contract I don't even see Save - so assuming there is no way how to save an Ref.Emit'd assembly to disk/byte[]. So how can I use LoadFromStream?
how can I use LoadFromStream?
Do not use System.Reflection.Emit...
@KevinRansom Why does F# use Reflection.Emit?
Hi Guys,
when can we expect cross platform support PDB's from REF emit. The F# compiler relies on ref-emit for Quotations and TypeProviders. We aim to have cross platform compilation and debugging working for F# by the end of the year, it would be great if we can debug quotations and TP generated types too.
Thanks
Kevin