commandlineparser / commandlineparser/commandline

Console.Error should not be referenced in a static object

Abierto
#747 1 comentario 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
C#
Estrellas
4.8k
Forks
478
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

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_0`1.b__1(IEnumerable`1 _, TextWriter writer)
at CSharpx.MaybeExtensions.Do[T1,T2](Maybe`1 maybe, Action`2 action)
at CommandLine.Parser.<>c__DisplayClass17_0`1.b__0(IEnumerable`1 errors)
at CommandLine.ParserResultExtensions.WithNotParsed[T](ParserResult`1 result, Action`1 action)
at CommandLine.Parser.DisplayHelp[T](ParserResult`1 parserResult, TextWriter helpWriter, Int32 maxDisplayWidth)
at CommandLine.Parser.MakeParserResult[T](ParserResult`1 parserResult, ParserSettings settings)
at CommandLine.Parser.ParseArguments(IEnumerable`1 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

```c#
private static readonly Lazy DefaultParser = new Lazy(() => new Parser(new ParserSettings { HelpWriter = Console.Error }));
```

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.