Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

473
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!