commandline
commandline copied to clipboard
Console.Error should not be referenced in a static object
Changing the Console.Error throws System.ObjectDisposedException
Console.Error can be changed using Console.SetError() method, so having this as a static reference prevents using the "newly" assigned TextWriter as it keeps the referenced to the original instance which has been disposed.
"Cannot write to a closed TextWriter."
at System.IO.StringWriter.Write(String value)
at System.IO.TextWriter.SyncTextWriter.Write(String value)
at CommandLine.Parser.<>c__DisplayClass17_01.<DisplayHelp>b__1(IEnumerable
1 _, TextWriter writer)
at CSharpx.MaybeExtensions.Do[T1,T2](Maybe1 maybe, Action
2 action)
at CommandLine.Parser.<>c__DisplayClass17_01.<DisplayHelp>b__0(IEnumerable
1 errors)
at CommandLine.ParserResultExtensions.WithNotParsed[T](ParserResult1 result, Action
1 action)
at CommandLine.Parser.DisplayHelp[T](ParserResult1 parserResult, TextWriter helpWriter, Int32 maxDisplayWidth) at CommandLine.Parser.MakeParserResult[T](ParserResult
1 parserResult, ParserSettings settings)
at CommandLine.Parser.ParseArguments(IEnumerable1 args, Type[] types) at TestApp.Program.Main(String[] args) in Program.cs:line 25 at TestApp.Tests.ProgramTest.Main_ShouldExecuteCommandSuccesfully(List
1 args) in ProgramTest.cs:line 18
https://github.com/commandlineparser/commandline/blob/d443a51aeb3a418425e970542b3b96e9da5f62e2/src/CommandLine/Parser.cs#L22
private static readonly Lazy<Parser> DefaultParser = new Lazy<Parser>(() => new Parser(new ParserSettings { HelpWriter = Console.Error }));