/////////////////////////////////////////////////////////////////////////////
        // Overridden Package Implementation
        #region Package Members

        /// <summary>
        /// Initialization of the package; this method is called right after the package is sited, so this is the place
        /// where you can put all the initialization code that rely on services provided by VisualStudio.
        /// </summary>
        protected override void Initialize()
        {
            var log4netconfig = config.ConfigPath + Path.DirectorySeparatorChar + "VisualStudioComparisonTools.dll.log4net";

            if (File.Exists(log4netconfig))
            {
                var configFile = new FileInfo(log4netconfig);
                XmlConfigurator.Configure(configFile);
            }
            else
            {
                XmlConfigurator.Configure();
            }

            Debug.WriteLine(string.Format(CultureInfo.CurrentCulture, "Entering Initialize() of: {0}", this.ToString()));
            base.Initialize();

            try
            {
                log.Debug("Loading config");
                config.Load();
            }
            catch (Exception ex)
            {
                log.Error(ex);
            }

            // Add our command handlers for menu (commands must exist in the .vsct file)
            OleMenuCommandService mcs = GetService(typeof(IMenuCommandService)) as OleMenuCommandService;

            if (null != mcs)
            {
                // Create the command for the menu item.
                var menuCommandID = new CommandID(GuidList.guidVSCompToolsCmdSet, (int)PkgCmdIDList.cmdidCompareSelected);
                //var menuItem = new MenuCommand(MenuItemCallback, menuCommandID);
                var menuItem = new OleMenuCommand(MenuItemCallback, menuCommandID);
                menuItem.BeforeQueryStatus += menuItem_BeforeQueryStatus;
                mcs.AddCommand(menuItem);

                var menuCommandIDFolder = new CommandID(GuidList.guidVSCompToolsCmdSet, (int)PkgCmdIDList.cmdidCompareSelectedFolder);
                //var menuItem = new MenuCommand(MenuItemCallback, menuCommandID);
                var menuItemFolder = new OleMenuCommand(MenuItemCallback, menuCommandIDFolder);
                menuItemFolder.BeforeQueryStatus += menuItem_BeforeQueryStatus;
                mcs.AddCommand(menuItemFolder);

                var menuCommandIDEditor = new CommandID(GuidList.guidVSCompToolsCmdSet, (int)PkgCmdIDList.cmdidCompareSelectedEditor);
                //var menuItem = new MenuCommand(MenuItemCallback, menuCommandID);
                var menuItemEditor = new OleMenuCommand(MenuItemCallback, menuCommandIDEditor);
                menuItemEditor.BeforeQueryStatus += menuItem_BeforeQueryStatus;
                mcs.AddCommand(menuItemEditor);

                var menuCommandIDMultiProj = new CommandID(GuidList.guidVSCompToolsCmdSet, (int)PkgCmdIDList.cmdidCompareSelectedMultiProj);
                //var menuItem = new MenuCommand(MenuItemCallback, menuCommandID);
                var menuItemMultiProj = new OleMenuCommand(MenuItemCallback, menuCommandIDMultiProj);
                menuItemMultiProj.BeforeQueryStatus += menuItem_BeforeQueryStatus;
                mcs.AddCommand(menuItemMultiProj);
            }
        }