private static Options createOptions(CommandLineArguments arguments)
        {
            if (arguments.FreeArguments.Count != 1)
            {
                Console.WriteLine("You must specify exactly 1 path to VS 2010 solution");
                return null;
            }

            Options options = new Options(arguments.FreeArguments[0]);

            if (arguments.NamedArguments.ContainsKey("target"))
            {
                string target = arguments.NamedArguments["target"];
                if (!m_supportedTargets.Contains(target))
                {
                    Console.WriteLine("Invalid target");
                    return null;
                }

                options.Target = target;
            }

            if (arguments.NamedArguments.ContainsKey("output"))
                options.ResultDirectory = arguments.NamedArguments["output"];

            if (arguments.NamedArguments.ContainsKey("solutionpostfix"))
                options.ResultSolutionPostfix = arguments.NamedArguments["solutionpostfix"];

            if (arguments.NamedArguments.ContainsKey("replacesolutionpostfix"))
                options.ReplaceSolutionPostfix = arguments.NamedArguments["replacesolutionpostfix"];

            if (arguments.NamedArguments.ContainsKey("projectpostfix"))
                options.ResultProjectPostfix = arguments.NamedArguments["projectpostfix"];

            if (arguments.NamedArguments.ContainsKey("replaceprojectpostfix"))
                options.ReplaceProjectPostfix = arguments.NamedArguments["replaceprojectpostfix"];

            return options;
        }
        public static int Main(params string[] args)
        {
            try
            {
                CommandLineArguments arguments = new CommandLineArguments(args);
                Options options = createOptions(arguments);
                if (options == null)
                {
                    printUsage();
                    return 1;
                }

                Converter converter = new Converter(options);
                converter.Execute();

                return 0;
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                Console.WriteLine(e.StackTrace);
                return 1;
            }
        }