I can't seem to get my modified assembly to retain debug info.
The app is built in debug mode and all the pdbs are available. Before
the assembly I modify is loaded into the AppDomain, I do (in the entry
assembly)
public static void Weave()
{
const string fileName = "SomeDll.dll";
var data = Weaver.Weave(File.ReadAllBytes(fileName));
File.WriteAllBytes(fileName, data);
}
and my Weaver:
public static byte[] Weave(byte[] assemblyData)
{
var weavedAssembly =
Weave(AssemblyFactory.GetAssembly(assemblyData)); // does
modifications
AssemblyFactory.SaveAssembly(weavedAssembly, out
assemblyData);
return assemblyData;
}
After WriteAllBytes gets called, when the assembly is subsequently
loaded, none of my breakpoints get hit and I can't debug the code in
that assembly.
It makes sense, since the symbols would be different after the
modification, but if I try:
module.SaveSymbols(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
I subsequently get
"Specified method is not supported."
trying to call
AssemblyFactory.SaveAssembly(weavedAssembly, out assemblyData);
I think I'm just doing something stupid wrong here...
Thanks in advance.
--
--
mono-cecil