Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

468
Vistas
¿Por qué mi aplicación de consola .NET Core 6 no quiere ejecutarse en CLI?

[Información de contexto]

Así que instalé el nuevo Visual Studio 2022 y decidí probar .NET Core 6 para obtener un script simple. En primer lugar, creé una nueva aplicación de consola y me confundí de inmediato. Sin método principal, sin escribir en la documentación para usar argumentos CLI (necesito pasar dos argumentos de ruta de destino). Encontré una publicación de desbordamiento sobre cómo acceder a los argumentos a través de la clase System.Environment. Así que seguí adelante.

[Pregunta]

En las aplicaciones de consola .NET Core 5, no tuve problemas para ejecutar ejecutables compilados con argumentos a través de la CLI. Pero cuando publiqué mi código y lo ejecuté a través de la línea de comando, obtuve el siguiente resultado (ver resultado) con la línea extraña "el programa no puede ejecutarse en modo DOS". Curiosamente, todavía lee uno de los archivos ini, pero cuando ejecuto powershell, lee el otro archivo ini. Este es un comportamiento muy extraño para mí. ¿Debería volver a cambiar a .NET Core 5 o tratar de entender lo que está sucediendo? ¿Es el hecho de que estoy leyendo INI? (lamentablemente no tengo otra opción ya que es un proyecto heredado). Cualquier ayuda es apreciada.

[Código]

 using System.IO; //get command line arguments try { string stationIniPath = Environment.GetCommandLineArgs()[0]; string equipmentIniPath = Environment.GetCommandLineArgs()[1]; Console.WriteLine("- Reading INI data -"); if(stationIniPath != null && equipmentIniPath != null){ string[] stationINI = System.IO.File.ReadAllLines(stationIniPath); string[] equipmentINI = System.IO.File.ReadAllLines(equipmentIniPath); foreach(string station in stationINI) { Console.WriteLine(station); } foreach(string equipment in equipmentINI) { Console.WriteLine(equipment); } } else { throw new Exception("Need to specify command line arguments"); } } catch (Exception e) { Console.WriteLine("You must specify arguments [0] Station INI Path and [1] Equipment INI path : " + e.Message); }

[Salida cuando se ejecutó usando Powershell & || CMD] salida CLI

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Environment.GetCommandLineArgs() siempre tiene el nombre del archivo de proceso como primer elemento. Debe comenzar desde el índice 1.

over 4 years ago · Santiago Trujillo Denunciar

0

Otro enfoque: use el parámetro args generado por el compilador:

El método de punto de entrada siempre tiene un parámetro formal, string[] args . El entorno de ejecución crea y pasa un argumento string[] que contiene los argumentos de la línea de comandos que se especificaron cuando se inició la aplicación. El argumento string[] nunca es nulo, pero puede tener una longitud de cero si no se especificaron argumentos de línea de comandos. El parámetro args está dentro del alcance de las declaraciones de nivel superior y no está dentro del alcance fuera de ellas. Se aplican las reglas habituales de conflicto de nombres/sombreado.

 string stationIniPath = args[0]; string equipmentIniPath = args[1];
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda