Exemplo n.º 1
0
        public CecilTypeSystem(IEnumerable <string> paths, string targetPath = null)
        {
            if (targetPath != null)
            {
                paths = paths.Concat(new[] { targetPath });
            }
            _resolver  = new CustomMetadataResolver(this);
            _typeCache = new CecilTypeCache(this);
            foreach (var path in paths.Distinct())
            {
                var isTarget = path == targetPath;
                var asm      = AssemblyDefinition.ReadAssembly(path, new ReaderParameters(ReadingMode.Deferred)
                {
                    ReadWrite                      = isTarget,
                    InMemory                       = true,
                    AssemblyResolver               = this,
                    MetadataResolver               = _resolver,
                    ThrowIfSymbolsAreNotMatching   = false,
                    SymbolReaderProvider           = isTarget ? new DefaultSymbolReaderProvider(false) : null,
                    ApplyWindowsRuntimeProjections = false
                });

                var wrapped = RegisterAssembly(asm);
                if (path == targetPath)
                {
                    TargetAssembly           = wrapped;
                    TargetAssemblyDefinition = asm;
                }
            }
        }
Exemplo n.º 2
0
 public CecilTypeSystem(IEnumerable <string> paths, string targetPath = null)
 {
     if (targetPath != null)
     {
         paths = paths.Concat(new[] { targetPath });
     }
     _resolver  = new CustomMetadataResolver(this);
     _typeCache = new CecilTypeCache(this);
     foreach (var path in paths.Distinct())
     {
         var asm = AssemblyDefinition.ReadAssembly(path, new ReaderParameters(ReadingMode.Deferred)
         {
             ReadWrite        = path == targetPath,
             InMemory         = true,
             AssemblyResolver = this,
             MetadataResolver = _resolver,
         });
         RegisterAssembly(asm);
     }
 }