public override bool Execute()
  {
    var validationLogic = new CheckSolutionForMissingProjectsLogic(new MSBuildLogger(this.Log));
    var ret = true;
    
    foreach (var solutionPath in SolutionPaths.Select(i => i.ItemSpec))
      ret = ret & validationLogic.Check(solutionPath);

    return ret;
  }
  public static int Main(string []args)
  {
    Console.ForegroundColor = ConsoleColor.White;
    var directory = Directory.GetCurrentDirectory();

    if (args.Length > 1)
    {
      Console.WriteLine("Error: This application accepts single parameter: Root path of the C# code repository");
      return ErrorWrongUsage;
    }
    else if (args.Length == 1)
    {
      directory = args.First();
    }
    
    Console.WriteLine("Checking for missing project references in solutions. ");
    
    var validationLogic = new CheckSolutionForMissingProjectsLogic(new ConsoleLogger());
    var allSolutions    = Directory.EnumerateFiles(directory, "*.sln", SearchOption.AllDirectories);
    var result          = true;
    
    try
    {
      foreach (var file in allSolutions)
        result = result & validationLogic.Check(file);
    }
    catch (Exception e)
    {
      Console.WriteLine("Fatal Error: {0}\n {1}", e.Message, e.StackTrace);
      result = false;
    }
   
    return result ? NoError : ErrorFailedValidation;
  }