public void Execute()
{
try
{
var referenceFinder = new AssemblyReferenceFinder(this, Logger);
referenceFinder.Execute();
var assemblyResolver = new AssemblyResolver(referenceFinder);
var reader = new ModuleReader
{
AssemblyResolver = assemblyResolver,
InnerWeaver = this,
Logger = Logger
};
reader.Execute();
var weaverInitialiser = new WeaverInitialiser
{
ModuleDefinition = reader.ModuleDefinition,
AssemblyResolver = assemblyResolver,
InnerWeaver = this,
Logger = Logger
};
weaverInitialiser.Execute();
var weaverRunner = new ModuleWeaverRunner
{
Logger = Logger,
};
Logger.LogInfo("");
foreach (var weaverInstance in weaverInitialiser.WeaverInstances)
{
var weaverName = ObjectTypeName.GetAssemblyName(weaverInstance);
Logger.SetCurrentWeaverName(weaverName);
try
{
weaverRunner.Execute(weaverInstance);
}
catch (Exception exception)
{
Logger.LogError(exception.ToFriendlyString());
return;
}
finally
{
Logger.ClearWeaverName();
}
}
var keyFinder = new StrongNameKeyFinder
{
InnerWeaver = this,
Logger = Logger,
ModuleDefinition = reader.ModuleDefinition
};
keyFinder.Execute();
var moduleWriter = new ModuleWriter
{
InnerWeaver = this,
Logger = Logger,
ModuleDefinition = reader.ModuleDefinition,
StrongNameKeyFinder = keyFinder,
};
moduleWriter.Execute();
}
catch (Exception exception)
{
Logger.LogError(exception.ToFriendlyString());
}
}