Example #1
0
        private void DisassembleFile(string fileName)
        {
            WriteLine(String.Format("{0}: ", fileName));

            string outputDir = Path.Combine(txtOutputDir.Text, Path.GetFileName(fileName)) + "_Source";

            if (!Directory.Exists(outputDir))
            {
                Directory.CreateDirectory(outputDir);
            }

            Reflector.CodeModel.IAssembly assembly = null;
            bool unloadAssembly = false;

            try
            {
                assembly = _reflector.FindAssembly(fileName);
                if (assembly == null)
                {
                    assembly       = _reflector.LoadAssembly(fileName);
                    unloadAssembly = true;
                }
                _host.SetProgress(0);

                FileDisassemblerHelper helper = new FileDisassemblerHelper(
                    _reflector,
                    fileName.EndsWith(".dll", StringComparison.OrdinalIgnoreCase) ? ProjectTypes.Library : ProjectTypes.WinExe,
                    outputDir,
                    new FileDisassemblerHelper.WriteLineDelegate(WriteLine),
                    new FileDisassemblerHelper.SetProgressBarDelegate(SetProgressBar),
                    new FileDisassemblerHelper.IsCancelPendingDelegate(IsCancelPending));

                int exceptions = helper.GenerateCode(assembly);

                WriteLine(string.Format("Done. {0} error(s).\r\n", exceptions));
            }
            catch
            {
                throw;
            }
            finally
            {
                if (assembly != null && unloadAssembly)
                {
                    _reflector.AssemblyManager.Unload(assembly);
                }
                _host.SetProgress(100);
            }
        }
        private void DisassembleFile(string fileName)
        {
            WriteLine(String.Format("{0}: ", fileName));

            string outputDir = Path.Combine(txtOutputDir.Text, Path.GetFileName(fileName)) + "_Source";
            if (!Directory.Exists(outputDir))
            {
                Directory.CreateDirectory(outputDir);
            }

            Reflector.CodeModel.IAssembly assembly = null;
            bool unloadAssembly = false;
            try
            {
                assembly = _reflector.FindAssembly(fileName);
                if (assembly == null)
                {
                    assembly = _reflector.LoadAssembly(fileName);
                    unloadAssembly = true;
                }
                _host.SetProgress(0);

                FileDisassemblerHelper helper = new FileDisassemblerHelper(
                    _reflector,
                    fileName.EndsWith(".dll", StringComparison.OrdinalIgnoreCase) ? ProjectTypes.Library : ProjectTypes.WinExe,
                    outputDir,
                    new FileDisassemblerHelper.WriteLineDelegate(WriteLine),
                    new FileDisassemblerHelper.SetProgressBarDelegate(SetProgressBar),
                    new FileDisassemblerHelper.IsCancelPendingDelegate(IsCancelPending));

                int exceptions = helper.GenerateCode(assembly);

                WriteLine(string.Format("Done. {0} error(s).\r\n", exceptions));

            }
            catch
            {
                throw;
            }
            finally
            {
                if (assembly != null && unloadAssembly)
                {
                    _reflector.AssemblyManager.Unload(assembly);
                }
                _host.SetProgress(100);
            }
        }