55using System . Windows ;
66using CadAddinManager . View ;
77using Mono . Cecil ;
8+ using Mono . Cecil . Pdb ;
89
910namespace CadAddinManager . Model ;
1011
@@ -84,16 +85,18 @@ public Assembly LoadAddinsToTempFolder(string originalFilePath, bool parsingOnly
8485 {
8586 stringBuilder . Append ( "-Executing-" ) ;
8687 }
88+
8789 tempFolder = FileUtils . CreateTempFolder ( stringBuilder . ToString ( ) ) ;
88- string fileAssemblyTemp = String . Empty ;
89- try
90- {
91- fileAssemblyTemp = ResolveDuplicateMethod ( originalFilePath ) ;
92- }
93- catch ( Exception )
94- {
95- fileAssemblyTemp = originalFilePath ;
96- }
90+ string fileAssemblyTemp = ResolveDuplicateMethod ( originalFilePath ) ;
91+ // string fileAssemblyTemp = String.Empty;
92+ // try
93+ // {
94+ // fileAssemblyTemp = ResolveDuplicateMethod(originalFilePath);
95+ // }
96+ // catch (Exception)
97+ // {
98+ // fileAssemblyTemp = originalFilePath;
99+ // }
97100 var assembly = CopyAndLoadAddin ( fileAssemblyTemp , parsingOnly ) ;
98101 if ( assembly == null || ! IsAPIReferenced ( assembly ) )
99102 {
@@ -104,7 +107,9 @@ public Assembly LoadAddinsToTempFolder(string originalFilePath, bool parsingOnly
104107
105108 private string ResolveDuplicateMethod ( string originalFilePath )
106109 {
107- AssemblyDefinition ass = AssemblyDefinition . ReadAssembly ( originalFilePath ) ;
110+
111+ // AssemblyDefinition ass = AssemblyDefinition.ReadAssembly(originalFilePath);
112+ AssemblyDefinition ass = GetAssemblyDef ( originalFilePath ) ;
108113 foreach ( ModuleDefinition def in ass . Modules )
109114 {
110115 foreach ( TypeDefinition d in def . Types )
@@ -144,7 +149,26 @@ private string ResolveDuplicateMethod(string originalFilePath)
144149 ass . Write ( fileAssemblyTemp ) ;
145150 return fileAssemblyTemp ;
146151 }
152+ public static AssemblyDefinition GetAssemblyDef ( string assemblyPath )
153+ {
154+
155+ var assemblyResolver = new DefaultAssemblyResolver ( ) ;
156+ var assemblyLocation = Path . GetDirectoryName ( assemblyPath ) ;
157+ assemblyResolver . AddSearchDirectory ( assemblyLocation ) ;
147158
159+ var readerParameters = new ReaderParameters { AssemblyResolver = assemblyResolver } ;
160+
161+ var pdbName = Path . ChangeExtension ( assemblyPath , "pdb" ) ;
162+ if ( File . Exists ( pdbName ) )
163+ {
164+ var symbolReaderProvider = new PdbReaderProvider ( ) ;
165+ readerParameters . SymbolReaderProvider = symbolReaderProvider ;
166+ readerParameters . ReadSymbols = true ;
167+ }
168+
169+ var assemblyDef = AssemblyDefinition . ReadAssembly ( assemblyPath , readerParameters ) ;
170+ return assemblyDef ;
171+ }
148172 private string SaveAssemblyModifyToTemp ( string originalFilePath )
149173 {
150174 string prefix = "RenameCommand-" ;
0 commit comments