private void RunOpenCover()
        {
            try
            {
                if (!TestProjects.Any(t => t.IsSelected))
                {
                    LogMessages.Add(LogMessage.Log("No selected projects found", LogMessage.LogType.Warning));
                    MessageBox.Show("Select the projects you want to run", "No projects selected", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                    return;
                }

                if (ProjectType == ProjectType.DotNetCore)
                {
                    RunDotNetCoreImplementation();
                }
                else
                {
                    RunDotNetFrameworkImplementation();
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                LogMessages.Add(LogMessage.Log(e.Message, LogMessage.LogType.Error));
            }
        }
        private void LoadProjects()
        {
            try
            {
                ProjectType = FindProjectType();
                LogMessages.Add(LogMessage.Log("Loading projects", LogMessage.LogType.Info));
                TestProjects.Clear();
                AssemblyProjects.Clear();

                var projects = Common.Instance.Dte2Object.Solution.Projects;

                foreach (Project project in projects)
                {
                    if (!project.Name.Contains(".Test"))
                    {
                        if (project.Name.StartsWith("BeagleStreet."))
                        {
                            LogMessages.Add(LogMessage.Log($"Loaded test project {project.Name}", LogMessage.LogType.Success));
                            AssemblyProjects.Add(new LoadedProject {
                                IsSelected = true, Name = project.Name
                            });
                        }

                        continue;
                    }

                    var filePath = ProjectType == ProjectType.DotNetCore ?
                                   $"{Path.GetDirectoryName(project.FileName)}\\{project.Name}.csproj" :
                                   $"{Path.GetDirectoryName(project.FileName)}\\bin\\debug\\{project.Name}.dll";

                    if (File.Exists(filePath))
                    {
                        LogMessages.Add(LogMessage.Log($"Loaded test project {filePath}", LogMessage.LogType.Success));
                        TestProjects.Add(new LoadedProject {
                            IsSelected = true, Name = project.Name, AssemblyFilePath = filePath
                        });
                    }
                    else
                    {
                        LogMessages.Add(LogMessage.Log($"Could not find the file {filePath}", LogMessage.LogType.Error));
                    }
                }

                LogMessages.Add(TestProjects.Any()
                    ? LogMessage.Log($"Loaded {TestProjects.Count} test projects", LogMessage.LogType.Success)
                    : LogMessage.Log("Could not test load projects, click reload projects to try again", LogMessage.LogType.Error));
            }
            catch (Exception ex)
            {
                TestProjects.Clear();
                LogMessages.Add(LogMessage.Log($"Failed to load the projects, click reload to try again. ** {ex.Message} **", LogMessage.LogType.Error));
            }
        }
 private bool CanRunCodeCover()
 {
     return(TestProjects.Any(t => t.IsSelected) && AssemblyProjects.Any(a => a.IsSelected));
 }