Esta pregunta es una continuación de esta otra .
En esa pregunta, se menciona el uso de [assembly: AssemblyVersion(...)] en el archivo AssemblyInfo.cs y, mientras tanto, descubrí que está prohibido ejecutar cualquier procesamiento antes de esa línea, el único lo que está permitido es algo así como:
[assembly: AssemblyVersion("1.0.0.0" + "-" + Namespace.Class.Attribute)], or: [assembly: AssemblyVersion("1.0.0.0" + "-" + Namespace.Class.Method())] Pregunta inicial:
Entonces, mi pregunta: ¿hay un Namespace.Class.Attribute o Namespace.Class.Method() que contenga el hash de confirmación (o sha o sha acortado) de una aplicación C#?
Editar después de más investigación
Mientras tanto, aprendí que el comando git describe --always me brinda la información que busco, así que lo que necesito es algo como:
[assembly: AssemblyVersion("1.0.0.0-" + Launch("git describe --always")] ... pero ¿cómo puedo ejecutar ese Launch() ?
Ya sé que puedo ejecutar un comando de línea de comandos usando System.Diagnostics.Process() , como este ejemplo:
System.Diagnostics.Process.Start(foldervar + "application.exe", "inputfile.txt");... pero de esta manera no capta el resultado de ese comando.
Nueva pregunta:
Entonces, ¿alguien conoce una sola línea de C# para iniciar comandos de línea de comandos y obtener su resultado?
Gracias por adelantado
No es una sola línea, pero este artículo https://galdin.dev/blog/show-git-commit-sha-in-net-applications/ muestra una forma sencilla de ejecutar el comando y acceder al resultado. Los pasos descritos en este artículo son los siguientes,
Para hacer esto, creamos un evento precompilado que ejecutará un comando git y lo guardará en un archivo de texto. Luego agregamos ese archivo de texto generado como un recurso de cadena. Ahora se podrá acceder al recurso desde C#.
Haga clic derecho en la aplicación web y haga clic en propiedades.
Vaya a la pestaña de eventos de compilación y escriba lo siguiente en la línea de comando del evento previo a la compilación:
git rev-parse HEAD --short > "$(ProjectDir)\CurrentCommit.txt"Obviamente, el comando puede ser reemplazado por cualquier cosa que crea conveniente.
Guarde y compile el proyecto. (Ctrl+Mayús+S, Ctrl+Mayús+B)
Se debe crear un nuevo archivo llamado
CurrentCommit.txten la raíz de su proyecto.Continúe y exclúyalo del Control de código fuente
En la página de propiedades de los proyectos, vaya a la pestaña Recursos y agregue el archivo existente
CurrentCommit.txtcomo recurso.Ahora se puede acceder al contenido del archivo generado como:
Your.NameSpace.Properties.Resources.CurrentCommit;