public int Execute(CommandLineOptions options)
        {
            Debug.Assert(options != null, "options is null.");

            var targetProjectPath = options.TargetProject ?? Directory.GetCurrentDirectory();

            var targetProject = _projectFactory.Create(targetProjectPath,
                                                       options.Framework,
                                                       options.Configuration,
                                                       options.BuildOutputPath);

            var startupProject = string.IsNullOrEmpty(options.StartupProject)
                ? targetProject
                : _projectFactory.Create(options.StartupProject,
                                         targetProject.TargetFramework,
                                         options.Configuration,
                                         options.BuildOutputPath);

            Reporter.Verbose.WriteLine(string.Format(ToolsDotNetStrings.LogUsingTargetProject, targetProject.ProjectName));
            Reporter.Verbose.WriteLine(string.Format(ToolsDotNetStrings.LogUsingStartupProject, startupProject.ProjectName));
            Reporter.Verbose.WriteLine(string.Format(ToolsDotNetStrings.LogUsingFramework, startupProject.TargetFramework.GetShortFolderName()));
            Reporter.Verbose.WriteLine(string.Format(ToolsDotNetStrings.LogUsingConfiguration, startupProject.Configuration));

            if (!options.NoBuild)
            {
                _projectBuilder.EnsureBuild(startupProject);
            }

            Reporter.Verbose.WriteLine(string.Format(ToolsDotNetStrings.LogDataDirectory, startupProject.TargetDirectory));

            var commandSpec = _commandSpecFactory.Create(startupProject, targetProject, options.IsVerbose, options.RemainingArguments);

            Reporter.Verbose.WriteLine(string.Format(ToolsDotNetStrings.LogBeginDispatch, startupProject.ProjectName));

            return(Command.Create(commandSpec)
                   .Execute()
                   .ExitCode);
        }