Tengo un conjunto de pruebas, con una función principal que devuelve 1. Sin embargo, el código de salida después de que finaliza la aplicación es 0.
Esto parece estar relacionado con un servidor ASP.NET que estoy ejecutando en segundo plano. Si desactivo el servidor, el código de salida es 1 como se esperaba.
Este código funciona como se esperaba, y la consola informa un código de salida de 1 (esta es la sintaxis de F#, pero estoy bastante seguro de que no está relacionada):
[<EntryPoint> let main (arts : string array) : int = 1mientras que esto tiene un código de salida de 0, que no es lo que espero:
[<EntryPoint> let main (arts : string array) : int = MyHttpServer.init() 1Aquí está la función MyHttpServer.init:
let init() : Task = Host .CreateDefaultBuilder() .Build() .RunAsync()Mi pregunta: ¿qué pasa con tener un servidor ejecutándose en segundo plano que hace que el código de salida sea cero? ¿Hay algo en .NET donde el código de salida se vea afectado por tareas e hilos en segundo plano?
Nota: .NET 6 preview 5, pero esto sucedió en todas las versiones que he usado desde .NET 5 en adelante.
No estoy muy familiarizado con la sintaxis de F #, PERO sospecho que si Init() sale b/c de un error/excepción, entonces la ejecución nunca alcanzaría la línea que devuelve un 1 y, por lo tanto, saldría con un valor de 0.
EDITAR: si se lanza una excepción al llamar a Init , o si se lanza una excepción antes de que Init pueda regresar, la excepción no controlada terminaría el proceso y el código que devuelve 1 no se ejecutaría.