Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

292
Visualizações
¿Por qué mi aplicación de consola .NET Core 6 no quiere ejecutarse en la 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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda