Example #1
0
        protected virtual IAssemblyResolver GetResolver(string assemblyFile, IReadOnlyList <string> references)
        {
            var resolver = new KnownReferencesAssemblyResolver();

            if (!File.Exists(assemblyFile))
            {
                _log.Log(GenericErrorRule, $"Target not found: '{assemblyFile}'");
            }
            else
            {
                resolver.AddSearchDirectory(Path.GetDirectoryName(assemblyFile));
            }

            foreach (var refr in references)
            {
                if (!File.Exists(refr))
                {
                    _log.Log(GenericErrorRule, $"Reference not found: '{refr}'");
                }
                else
                {
                    resolver.AddReference(refr);
                }
            }

            return(resolver);
        }
        public int Execute(IReadOnlyList <string> args)
        {
            if (args.Count == 0)
            {
                ShowHelp();
                return(-1);
            }

            var filename = args[0];

            var optimize = args[1] == "-o";

            var refsStart = optimize ? 2 : 1;

            var references = new ArraySegment <string>(args.ToArray(), refsStart, args.Count - refsStart);

            if (!File.Exists(filename))
            {
                ShowHelp($"File {filename} does not exist.");
                return(1);
            }

            var log       = new ConsoleLogger();
            var processor = CreateProcessor(log);

            var resolver = new KnownReferencesAssemblyResolver();

            resolver.AddSearchDirectory(Path.GetDirectoryName(filename));
            references.ToList().ForEach(resolver.AddReference);

            try
            {
                processor.Process(filename, resolver, optimize);
            }
            catch (Exception e)
            {
                log.LogError(CompilationMessage.From(e.ToString()));
            }

            return(log.IsErrorThrown ? 1 : 0);
        }