Exemple #1
0
        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);
        }
Exemple #2
0
        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();
                }
        }