public bool RemoveAssemblyResolveDir(string dir)
        {
            if (_resolveDirs.Contains(dir))
            {
                _resolveDirs.Remove(dir);

                BaseAssemblyResolver bar = GlobalAssemblyResolver.Instance as BaseAssemblyResolver;
                if (bar != null)
                {
                    bar.RemoveSearchDirectory(dir);
                }

                return(true);
            }
            return(false);
        }
Пример #2
0
        public static void Main(string[] args)
        {
            bool showHelp             = false;
            bool listDependenciesOnly = false;

            foreach (var s in assemblyResolver.GetSearchDirectories())
            {
                assemblyResolver.RemoveSearchDirectory(s);
            }

            var p = new OptionSet()
            {
                { "a|assembly-search-directory=", "add a search directory into the assembly resolver", v => assemblyResolver.AddSearchDirectory(v) },
                { "d|list-dependencies-only", "output a list of detected dependencies and exit", v => listDependenciesOnly = v != null },
                { "k|key-pair-file=", "resign assembly with the key pair in file (.snk)", v => LoadKeyPairFile(v) },
                { "v", "increase verbosity", v => { if (v != null)
                                                    {
                                                        ++verbosity;
                                                    }
                  } },
                { "h|help", "show this message and exit", v => showHelp = v != null },
            };

            if (0 == args.Length)
            {
                TryHelp();
                return;
            }

            List <string> assemblies;

            try
            {
                assemblies = p.Parse(args);
            }
            catch (OptionException e)
            {
                Error(e.Message);
                TryHelp();
                return;
            }

            if (showHelp)
            {
                ShowHelp(p);
                return;
            }

            if (0 == assemblies.Count)
            {
                Error("No assembly names were given.");
                TryHelp();
                return;
            }

            if (0 == assemblyResolver.GetSearchDirectories().Length)
            {
                assemblyResolver.AddSearchDirectory(".");
            }

            IEnumerable <AssemblyDefinition> dependendAssemblies;

            try
            {
                dependendAssemblies = FindDependendAssemblies(assemblies).ToList();
            }
            catch (Exception exception)
            {
                Error("Unable find dependend assemblies: {0}", exception.ToString());
                return;
            }

            if (listDependenciesOnly)
            {
                foreach (var a in dependendAssemblies)
                {
                    Console.WriteLine(a.MainModule.FullyQualifiedName);
                }
                return;
            }

            foreach (var d in ProcessAssemblies(dependendAssemblies).ToList())
            {
                try
                {
                    WriteAssembly(d);
                }
                catch (Exception exception)
                {
                    Error("Unable to write assembly: {0}", exception.ToString());
                    continue;
                }
            }
        }