static AssemblyTranslator CreateTranslator( Configuration configuration, AssemblyManifest manifest, AssemblyCache assemblyCache ) { TypeInfoProvider typeInfoProvider = null; Console.Error.WriteLine( "// Using .NET framework {0} in {1} GC mode. Tuned GC {2}.", Environment.Version.ToString(), System.Runtime.GCSettings.IsServerGC ? "server" : "workstation", #if TARGETTING_FX_4_5 configuration.TuneGarbageCollection.GetValueOrDefault(true) ? "enabled" : "disabled" #else "disabled (must be built in .NET 4.5 mode)" #endif ); if ( configuration.ReuseTypeInfoAcrossAssemblies.GetValueOrDefault(true) && (CachedTypeInfoProvider != null) ) { if (CachedTypeInfoProviderConfiguration.Assemblies.Equals(configuration.Assemblies)) { typeInfoProvider = CachedTypeInfoProvider; } } var translator = new AssemblyTranslator( configuration, typeInfoProvider, manifest, assemblyCache, onProxyAssemblyLoaded: (name, classification) => Console.Error.WriteLine("// Loaded proxies from '{0}'", ShortenPath(name)) ); translator.Decompiling += MakeProgressHandler("Decompiling "); translator.RunningTransforms += MakeProgressHandler("Translating "); translator.Writing += MakeProgressHandler("Writing JS "); translator.AssemblyLoaded += (fn, classification) => Console.Error.WriteLine("// Loaded {0} ({1})", ShortenPath(fn), classification); translator.CouldNotLoadSymbols += (fn, ex) => { }; translator.CouldNotResolveAssembly += (fn, ex) => Console.Error.WriteLine("// Could not load module {0}: {1}", fn, ex.Message); translator.CouldNotDecompileMethod += (fn, ex) => Console.Error.WriteLine("// Could not decompile method {0}: {1}", fn, ex); if (typeInfoProvider == null) { if (CachedTypeInfoProvider != null) { CachedTypeInfoProvider.Dispose(); } CachedTypeInfoProvider = translator.GetTypeInfoProvider(); CachedTypeInfoProviderConfiguration = configuration; } return(translator); }
static AssemblyTranslator CreateTranslator( Configuration configuration, AssemblyManifest manifest, AssemblyCache assemblyCache ) { TypeInfoProvider typeInfoProvider = null; if ( configuration.ReuseTypeInfoAcrossAssemblies.GetValueOrDefault(true) && (CachedTypeInfoProvider != null) ) { if (CachedTypeInfoProviderConfiguration.Assemblies.Equals(configuration.Assemblies)) { typeInfoProvider = CachedTypeInfoProvider; } } var translator = new AssemblyTranslator( configuration, typeInfoProvider, manifest, assemblyCache, onProxyAssemblyLoaded: (name, classification) => { Console.Error.WriteLine("// Loaded proxies from '{0}'", ShortenPath(name)); } ); translator.Decompiling += MakeProgressHandler("Decompiling "); translator.RunningTransforms += MakeProgressHandler("Translating "); translator.Writing += MakeProgressHandler("Writing JS "); translator.AssemblyLoaded += (fn, classification) => { Console.Error.WriteLine("// Loaded {0} ({1})", ShortenPath(fn), classification); }; translator.CouldNotLoadSymbols += (fn, ex) => { }; translator.CouldNotResolveAssembly += (fn, ex) => { Console.Error.WriteLine("// Could not load module {0}: {1}", fn, ex.Message); }; translator.CouldNotDecompileMethod += (fn, ex) => { Console.Error.WriteLine("// Could not decompile method {0}: {1}", fn, ex.Message); }; if (typeInfoProvider == null) { if (CachedTypeInfoProvider != null) { CachedTypeInfoProvider.Dispose(); } CachedTypeInfoProvider = translator.GetTypeInfoProvider(); CachedTypeInfoProviderConfiguration = configuration; } return(translator); }
public void Dispose() { if (EvaluatorPool != null) { EvaluatorPool.Dispose(); EvaluatorPool = null; } if (DefaultTypeInfoProvider != null) { DefaultTypeInfoProvider.Dispose(); DefaultTypeInfoProvider = null; } }
static AssemblyTranslator CreateTranslator( Configuration configuration, AssemblyManifest manifest, AssemblyCache assemblyCache, Dictionary <string, IEmitterFactory> emitterFactories, Dictionary <string, IAnalyzer> analyzers ) { TypeInfoProvider typeInfoProvider = null; InformationWriteLine( "// Using .NET framework {0} in {1} GC mode. Tuned GC {2}.", Environment.Version.ToString(), System.Runtime.GCSettings.IsServerGC ? "server" : "workstation", configuration.TuneGarbageCollection.GetValueOrDefault(true) ? "enabled" : "disabled" ); if ( configuration.ReuseTypeInfoAcrossAssemblies.GetValueOrDefault(true) && (CachedTypeInfoProvider != null) ) { if (CachedTypeInfoProviderConfiguration.Assemblies.Equals(configuration.Assemblies)) { typeInfoProvider = CachedTypeInfoProvider; } } IEmitterFactory emitterFactory = GetEmitterFactory(configuration, emitterFactories); var translator = new AssemblyTranslator( configuration, typeInfoProvider, manifest, new AssemblyDataResolver(configuration, assemblyCache), onProxyAssemblyLoaded: (name, classification) => InformationWriteLine("// Loaded proxies from '{0}'", ShortenPath(name)), emitterFactory: emitterFactory, analyzers: analyzers.Values ); translator.Decompiling += MakeProgressHandler("Decompiling "); translator.RunningTransforms += MakeProgressHandler("Translating "); translator.Writing += MakeProgressHandler("Writing JS "); translator.AssemblyLoaded += (fn, classification) => InformationWriteLine("// Loaded {0} ({1})", ShortenPath(fn), classification); translator.CouldNotLoadSymbols += (fn, ex) => { }; translator.CouldNotResolveAssembly += (fn, ex) => Console.Error.WriteLine("// Could not load module {0}: {1}", fn, ex.Message); translator.CouldNotDecompileMethod += (fn, ex) => Console.Error.WriteLine("// Could not decompile method {0}: {1}", fn, ex); if (configuration.ProxyWarnings.GetValueOrDefault(false)) { translator.ProxyNotMatched += (ti) => { Console.Error.WriteLine("// Proxy {0} never matched any types.", ti); }; translator.ProxyMemberNotMatched += (qmi) => { Console.Error.WriteLine("// Proxy member {0} never matched any members.", qmi); }; } if (typeInfoProvider == null) { if (CachedTypeInfoProvider != null) { CachedTypeInfoProvider.Dispose(); } CachedTypeInfoProvider = translator.GetTypeInfoProvider(); CachedTypeInfoProviderConfiguration = configuration; } return(translator); }
public void TearDown() { TypeInfo.Dispose(); Corlib = null; }
public void Dispose() { TypeInfoProvider.Dispose(); AssemblyCache.Dispose(); base.Dispose(); }