es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Existe un comando de una sola línea en C# para la línea de comandos que pueda ayudarme a obtener el identificador del commit de GIT de una aplicación?

Esta pregunta es un seguimiento de esta otra pregunta.

En esa pregunta, se menciona el uso de [assembly: AssemblyVersion(...)] en el archivo AssemblyInfo.cs, y mientras tanto me he dado cuenta de que está prohibido ejecutar cualquier procesamiento antes de esa línea, lo único que se permite es algo como:

[assembly: AssemblyVersion("1.0.0.0" + "-" + Namespace.Clase.Atributo)]

o:

[assembly: AssemblyVersion("1.0.0.0" + "-" + Namespace.Clase.Metodo())]

Pregunta original:
Entonces mi pregunta es: ¿hay un Namespace.Clase.Atributo o Namespace.Clase.Metodo() que contenga el hash de confirmación (o sha o sha abreviado) de una aplicación C#?

Editar después de más investigación:
Mientras tanto, he aprendido que el comando git describe --always me proporciona la información que estoy buscando, así que lo que necesito es algo como:

[assembly: AssemblyVersion("1.0.0.0-" + Ejecutar("git describe --always"))]

… pero ¿cómo puedo ejecutar ese Ejecutar()?

Ya sé que puedo ejecutar un comando de línea de comandos usando System.Diagnostics.Process(), como este ejemplo:

System.Diagnostics.Process.Start(rutaCarpeta + "aplicacion.exe", "archivoEntrada.txt");

… pero de esta manera no obtengo el resultado de ese comando.

Nueva pregunta:
Entonces, ¿alguien sabe una línea de código en C# para ejecutar comandos de línea de comandos y obtener su resultado?

Gracias de antemano.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para ejecutar un comando de línea de comandos y obtener su resultado en C#, puedes usar el método Process.Start junto con la propiedad Process.StandardOutput para leer la salida del comando. Aquí tienes un ejemplo de una sola línea que demuestra esto:

    string result = System.Diagnostics.Process.Start("git", "describe --always").StandardOutput.ReadToEnd().Trim();
    

    Este código ejecuta el comando git describe --always, lee su salida utilizando la propiedad StandardOutput y elimina cualquier espacio en blanco del resultado. Luego puedes usar la variable result para incluir el hash de confirmación en la versión de tu ensamblado. Por ejemplo:

    [assembly: AssemblyVersion("1.0.0.0-" + result)]
    

    Ten en cuenta que este código asume que git está disponible en la ruta del sistema. Si no lo está, deberás especificar la ruta completa al ejecutable de git.

Comments are closed.