static void Main(string[] args)
        {
            if (args.Length == 0)
            {
                ShowHelpMessage();
                return;
            }

            if (args.Length % 2 != 0)
            {
                var firstCmd = args[0].Replace("-", string.Empty).Replace("/", string.Empty);
                //if (string.Compare(firstCmd, "h", StringComparison.OrdinalIgnoreCase) != 0
                //    && string.Compare(firstCmd, "?", StringComparison.OrdinalIgnoreCase) != 0)
                ShowHelpMessage();

                return;
            }

            for (int i = 0; (i * 2 + 1) < args.Length; i++)
            {
                var cmd      = args[2 * i];
                var cmdValue = args[2 * i + 1];

                cmd      = cmd.Replace("/", "-");
                cmdValue = cmdValue.Replace("\"", string.Empty);

                switch (cmd)
                {
                case "-s":
                    var souces = cmdValue.Split(',');
                    for (int sIndex = 0; sIndex < souces.Length; sIndex++)
                    {
                        MsnContext.Instance.SourceDirectories.Add(souces[sIndex].Trim());
                    }
                    break;

                case "-t":
                    MsnContext.Instance.TargetDirectoryPath = cmdValue;
                    break;

                default:
                    ShowHelpMessage();
                    break;
                }
            }

            if (CheckParam() == false)
            {
                return;
            }

            InternalLogger.InitializeLogger(ConsoleLogger.Instance);

            MsnHistoryCombineWorker.Instance.Scan();
            MsnHistoryCombineWorker.Instance.Merge();
        }