private void MakeWithIntermediateFiles(TempDir dir, Action ilasm) { const string _PRE = "Before"; const string _POST = "After"; string fout = Path.GetDirectoryName(InputValues.OutputFileName); using (GetNotifier().CreateContextName(this, Resources.CopyBeforeContextName)) CopyDirectory(dir.FullPath, Path.Combine(fout, _PRE), true); ilasm?.Invoke(); using (GetNotifier().CreateContextName(this, Resources.CopyAfterContextName)) CopyDirectory(dir.FullPath, Path.Combine(fout, _POST), true); }
public void Run() { if (this.Exports == null) { IExportAssemblyInspector assemblyInspector = Utilities.CreateAssemblyInspector(this.InputValues); using (this.GetNotifier().CreateContextName((object)this, Resources.ExtractExportsContextName)) this.Exports = assemblyInspector.ExtractExports(); using (this.GetNotifier().CreateContextName((object)this, Resources.FindDuplicateExportMethodsContextName)) { foreach (DuplicateExports duplicateExportMethod in this.Exports.DuplicateExportMethods) { if (duplicateExportMethod.Duplicates.Count > 0) { StringBuilder stringBuilder = new StringBuilder(200).AppendFormat("{0}.{1}", (object)duplicateExportMethod.UsedExport.ExportedClass.NullSafeCall <ExportedClass, string>((Func <ExportedClass, string>)(ec => ec.FullTypeName)), (object)duplicateExportMethod.UsedExport.Name); foreach (ExportedMethod duplicate in (IEnumerable <ExportedMethod>)duplicateExportMethod.Duplicates) { stringBuilder.AppendFormat(", {0}.{1}", (object)duplicate.ExportedClass.NullSafeCall <ExportedClass, string>((Func <ExportedClass, string>)(ec => ec.FullTypeName)), (object)duplicate.Name); } } } } } if (Exports.Count == 0) { return; } using (GetNotifier().CreateContextName(this, Resources.CreateTempDirectoryContextName)) using (var dir = new TempDir()) { RunIlDasm(dir.FullPath); void _ilasm() => RunIlAsm(dir.FullPath); if (InputValues.LeaveIntermediateFiles.IsTrue()) { MakeWithIntermediateFiles(dir, _ilasm); return; } _ilasm(); } }