/// ------------------------------------------------------------------------------------
        /// <summary>
        /// Tries to find the buildfile based on the passed in path
        /// </summary>
        /// <param name="path">Path of the solution</param>
        /// ------------------------------------------------------------------------------------
        private string RetrieveBuildFile(string path)
        {
            using (var options = new AddinOptions(Parent))
            {
                // try the solution path
                var buildFile = path != null ?
                    Path.Combine(Path.GetDirectoryName(path), options.Buildfile) : string.Empty;
                if (File.Exists(buildFile))
                    return buildFile;

                // try to find the right base directory based on the project path
                foreach (var baseDir in options.BaseDirectories)
                {
                    var dirToTest = baseDir + "\\";
                    if (path == null || path.ToLower().StartsWith(dirToTest.ToLower()))
                    {
                        return Path.GetFullPath(Path.Combine(baseDir, options.Buildfile));
                    }
                }

                // no success, so take first base directory that we have, or just build file
                return Path.GetFullPath(options.BaseDirectories.Length > 0 &&
                    Directory.Exists(options.BaseDirectories[0])?
                    Path.Combine(options.BaseDirectories[0], options.Buildfile) :
                    options.Buildfile);
            }
        }
        /// ------------------------------------------------------------------------------------------
        /// <summary>
        /// Checks for new updates.
        /// </summary>
        /// ------------------------------------------------------------------------------------------
        private void CheckForUpdates()
        {
            using (var options = new AddinOptions(this))
            {
                // find the update file
                if (options.BaseDirectories == null)
                    return;

                var i = 0;
                var updater = string.Empty;
                for (; i < options.BaseDirectories.Length; i++)
                {
                    updater = Path.Combine(options.BaseDirectories[i], @"Bin\VS Addins\FwVsUpdateChecker.exe");
                    if (File.Exists(updater))
                        break;
                }
                if (i >= options.BaseDirectories.Length || string.IsNullOrEmpty(updater))
                    return;

                using (var process = new Process())
                {
                    process.StartInfo.FileName = updater;
                    process.StartInfo.CreateNoWindow = true;
                    process.StartInfo.WorkingDirectory = Path.GetDirectoryName(updater);
                    if (Settings.Default.FirstTime)
                        process.StartInfo.Arguments = "/first " + options.BaseDirectories[i];
                    else
                        process.StartInfo.Arguments = options.BaseDirectories[i];
                    process.Start();
                }

                if (Settings.Default.FirstTime)
                {
                    Settings.Default.FirstTime = false;
                    Settings.Default.Save();
                }
            }
        }