/// <summary>
 /// Outputs a message to the debug output pane, if the VS MSBuildOutputVerbosity
 /// setting value is greater than or equal to the given verbosity. So if verbosity is 0,
 /// it means the message is always written to the output pane.
 /// </summary>
 /// <param name="verbosity">The verbosity level.</param>
 /// <param name="format">The format string.</param>
 /// <param name="args">An array of objects to write using format. </param>
 public Task WriteLineAsync(MSBuildVerbosityLevel verbosity, string format, params object[] args)
 {
     if (ShouldShowMessageAsOutput(verbosity))
     {
         return(_outputConsole.WriteLineAsync(format, args));
     }
     return(Task.CompletedTask);
 }
        /// <summary>
        /// MSBuild verbosity -> NuGet LogLevel
        /// </summary>
        private static LogLevel GetLogLevel(MSBuildVerbosityLevel level)
        {
            switch (level)
            {
            case MSBuildVerbosityLevel.Quiet:
                return(LogLevel.Warning);

            case MSBuildVerbosityLevel.Minimal:
            case MSBuildVerbosityLevel.Normal:
                return(LogLevel.Information);

            case MSBuildVerbosityLevel.Detailed:
                return(LogLevel.Verbose);

            default:
                return(LogLevel.Debug);
            }
        }
 /// <summary>
 /// True if this message will be written out.
 /// </summary>
 public bool ShouldShowMessageAsOutput(MSBuildVerbosityLevel verbosity)
 {
     return(_outputConsole != null && OutputVerbosity >= (int)verbosity);
 }