private void Apply()
{
InflatedCollectionCollector collector;
TypeDefinition[] definitionArray;
using (TinyProfiler.Section("PreProcessStage", ""))
{
this.PreProcessStage(out collector, out definitionArray);
}
MethodCollector methodCollector = new MethodCollector();
AttributeCollection attributeCollection = new AttributeCollection();
MetadataCollector metadataCollection = new MetadataCollector();
using (TinyProfiler.Section("MetadataCollector", ""))
{
metadataCollection.AddAssemblies(this._assembliesOrderedByDependency);
}
using (TinyProfiler.Section("AllAssemblyConversion", ""))
{
foreach (AssemblyDefinition definition in this._assembliesOrderedByDependency)
{
using (TinyProfiler.Section("Convert", definition.Name.Name))
{
this.Convert(definition, collector, attributeCollection, methodCollector, metadataCollection);
}
}
}
methodCollector.Complete();
using (TinyProfiler.Section("WriteGenerics", ""))
{
this.WriteGenerics(collector.AsReadOnly(), definitionArray, metadataCollection);
}
using (TinyProfiler.Section("VariousInvokers", ""))
{
this._virtualInvokerCollector.Write(this.GetPathFor("GeneratedVirtualInvokers", "h"));
this._genericVirtualInvokerCollector.Write(this.GetPathFor("GeneratedGenericVirtualInvokers", "h"));
this._interfaceInvokerCollector.Write(this.GetPathFor("GeneratedInterfaceInvokers", "h"));
this._genericInterfaceInvokerCollector.Write(this.GetPathFor("GeneratedGenericInterfaceInvokers", "h"));
}
using (TinyProfiler.Section("Metadata", "Global"))
{
SourceWriter.WriteCollectedMetadata(collector, this._assembliesOrderedByDependency, this._outputDir, this._dataFolder, metadataCollection, attributeCollection, this._vTableBuilder, methodCollector);
}
using (TinyProfiler.Section("Copy Etc", ""))
{
if (CodeGenOptions.Dotnetprofile == DotNetProfile.Net45)
{
MonoInstall.BleedingEdge.ConfigPath.Copy(this._dataFolder);
}
else
{
MonoInstall.TwoSix.ConfigPath.Copy(this._dataFolder);
}
}
this._debuggerSupport.GenerateSupportFilesIfNeeded(this._outputDir);
}