44using System . Linq ;
55using System . Threading ;
66using Mono . Cecil ;
7- using Mono . Cecil . Cil ;
87using Unity . CompilationPipeline . Common . ILPostProcessing ;
98
109namespace MLAPI . Editor . CodeGen
1110{
1211 class PostProcessorAssemblyResolver : IAssemblyResolver
1312 {
14- private readonly string [ ] _references ;
15- Dictionary < string , AssemblyDefinition > _cache = new Dictionary < string , AssemblyDefinition > ( ) ;
16- private ICompiledAssembly _compiledAssembly ;
13+ private readonly string [ ] _assemblyReferences ;
14+ private readonly Dictionary < string , AssemblyDefinition > _assemblyCache = new Dictionary < string , AssemblyDefinition > ( ) ;
15+ private readonly ICompiledAssembly _compiledAssembly ;
1716 private AssemblyDefinition _selfAssembly ;
1817
1918 public PostProcessorAssemblyResolver ( ICompiledAssembly compiledAssembly )
2019 {
2120 _compiledAssembly = compiledAssembly ;
22- _references = compiledAssembly . References ;
21+ _assemblyReferences = compiledAssembly . References ;
2322 }
2423
2524 public void Dispose ( )
2625 {
2726 }
2827
29- public AssemblyDefinition Resolve ( AssemblyNameReference name )
30- {
31- return Resolve ( name , new ReaderParameters ( ReadingMode . Deferred ) ) ;
32- }
28+ public AssemblyDefinition Resolve ( AssemblyNameReference name ) => Resolve ( name , new ReaderParameters ( ReadingMode . Deferred ) ) ;
3329
3430 public AssemblyDefinition Resolve ( AssemblyNameReference name , ReaderParameters parameters )
3531 {
36- lock ( _cache )
32+ lock ( _assemblyCache )
3733 {
3834 if ( name . Name == _compiledAssembly . Name )
3935 return _selfAssembly ;
@@ -44,9 +40,9 @@ public AssemblyDefinition Resolve(AssemblyNameReference name, ReaderParameters p
4440
4541 var lastWriteTime = File . GetLastWriteTime ( fileName ) ;
4642
47- var cacheKey = fileName + lastWriteTime . ToString ( ) ;
43+ var cacheKey = fileName + lastWriteTime ;
4844
49- if ( _cache . TryGetValue ( cacheKey , out var result ) )
45+ if ( _assemblyCache . TryGetValue ( cacheKey , out var result ) )
5046 return result ;
5147
5248 parameters . AssemblyResolver = this ;
@@ -58,19 +54,19 @@ public AssemblyDefinition Resolve(AssemblyNameReference name, ReaderParameters p
5854 parameters . SymbolStream = MemoryStreamFor ( pdb ) ;
5955
6056 var assemblyDefinition = AssemblyDefinition . ReadAssembly ( ms , parameters ) ;
61- _cache . Add ( cacheKey , assemblyDefinition ) ;
57+ _assemblyCache . Add ( cacheKey , assemblyDefinition ) ;
6258 return assemblyDefinition ;
6359 }
6460 }
6561
6662 private string FindFile ( AssemblyNameReference name )
6763 {
68- var fileName = _references . FirstOrDefault ( r => Path . GetFileName ( r ) == name . Name + ".dll" ) ;
64+ var fileName = _assemblyReferences . FirstOrDefault ( r => Path . GetFileName ( r ) == name . Name + ".dll" ) ;
6965 if ( fileName != null )
7066 return fileName ;
7167
7268 // perhaps the type comes from an exe instead
73- fileName = _references . FirstOrDefault ( r => Path . GetFileName ( r ) == name . Name + ".exe" ) ;
69+ fileName = _assemblyReferences . FirstOrDefault ( r => Path . GetFileName ( r ) == name . Name + ".exe" ) ;
7470 if ( fileName != null )
7571 return fileName ;
7672
@@ -81,7 +77,7 @@ private string FindFile(AssemblyNameReference name)
8177 //in the ILPostProcessing api. As a workaround, we rely on the fact here that the indirect references
8278 //are always located next to direct references, so we search in all directories of direct references we
8379 //got passed, and if we find the file in there, we resolve to it.
84- foreach ( var parentDir in _references . Select ( Path . GetDirectoryName ) . Distinct ( ) )
80+ foreach ( var parentDir in _assemblyReferences . Select ( Path . GetDirectoryName ) . Distinct ( ) )
8581 {
8682 var candidate = Path . Combine ( parentDir , name . Name + ".dll" ) ;
8783 if ( File . Exists ( candidate ) )
@@ -99,7 +95,7 @@ static MemoryStream MemoryStreamFor(string fileName)
9995 using ( var fs = new FileStream ( fileName , FileMode . Open , FileAccess . Read , FileShare . ReadWrite ) )
10096 {
10197 byteArray = new byte [ fs . Length ] ;
102- var readLength = fs . Read ( byteArray , 0 , ( int ) fs . Length ) ;
98+ var readLength = fs . Read ( byteArray , 0 , ( int ) fs . Length ) ;
10399 if ( readLength != fs . Length )
104100 throw new InvalidOperationException ( "File read length is not full length of file." ) ;
105101 }
0 commit comments