¿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.
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 propiedadProcess.StandardOutput
para leer la salida del comando. Aquí tienes un ejemplo de una sola línea que demuestra esto:Este código ejecuta el comando
git describe --always
, lee su salida utilizando la propiedadStandardOutput
y elimina cualquier espacio en blanco del resultado. Luego puedes usar la variableresult
para incluir el hash de confirmación en la versión de tu ensamblado. Por ejemplo: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 degit
.