From 5cff338a45d6dccddf40916be87241d5ebaad43e Mon Sep 17 00:00:00 2001 From: Wenning Qiu Date: Thu, 3 Feb 2022 17:18:38 -0600 Subject: [PATCH] Preserve Portable PDB embedded in the DLL. Update the dependencies to the latest. --- InjectModuleInitializer.csproj | 6 +++--- Injector.cs | 25 +++++++++++++++---------- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/InjectModuleInitializer.csproj b/InjectModuleInitializer.csproj index c156ea8..f37ac51 100644 --- a/InjectModuleInitializer.csproj +++ b/InjectModuleInitializer.csproj @@ -4,7 +4,7 @@ Exe EinarEgilsson.Utilities.InjectModuleInitializer InjectModuleInitializer - net35 + net40 *.binlog;Test\**\*.*;nuget\**\*.* false true @@ -26,8 +26,8 @@ - - + + diff --git a/Injector.cs b/Injector.cs index dcb0262..e2d83c1 100644 --- a/Injector.cs +++ b/Injector.cs @@ -88,12 +88,16 @@ private void InjectInitializer(MethodReference callee) private void WriteAssembly(string assemblyFile, string keyfile) { Debug.Assert(Assembly != null); - var writeParams = new WriterParameters(); + var writeParams = new WriterParameters() + { + WriteSymbols = true, // this takes care of embedded Portable PDB + }; + if (PdbFile(assemblyFile) != null) { - writeParams.WriteSymbols = true; writeParams.SymbolWriterProvider = new PdbWriterProvider(); } + if (keyfile != null) { writeParams.StrongNameKeyPair = new StrongNameKeyPair(File.ReadAllBytes(keyfile)); @@ -106,19 +110,20 @@ private void ReadAssembly(string assemblyFile) Debug.Assert(Assembly == null); var resolver = new DefaultAssemblyResolver(); - resolver.AddSearchDirectory(Path.GetDirectoryName(assemblyFile)); + resolver.AddSearchDirectory(Path.GetDirectoryName(assemblyFile)); + + var readParams = new ReaderParameters(ReadingMode.Immediate) + { + AssemblyResolver = resolver, + InMemory = true, + ReadSymbols = true, // this takes care of embedded Portable PDB + }; - var readParams = new ReaderParameters(ReadingMode.Immediate) - { - AssemblyResolver = resolver, - InMemory = true - }; - if (PdbFile(assemblyFile) != null) { - readParams.ReadSymbols = true; readParams.SymbolReaderProvider = new PdbReaderProvider(); } + Assembly = AssemblyDefinition.ReadAssembly(assemblyFile, readParams); }