Quiero la línea de comando para construir un proyecto particular de una solución usando msbuild como lo hacemos con devenv.com. En devenv.com podemos especificar un proyecto de una solución usando la siguiente línea de comando
devenv.com /Build Release|x86 test.sln /project "testproject"
Usando la línea de comando anterior, puedo construir el proyecto de prueba en test.sln usando devenv.com. ¿Cuál es la línea de comando para msbuild para la misma solución?
Gracias
Respuestas:
Tenga en cuenta que lo que se asigna
/t
es el nombre del proyecto en la solución, puede ser diferente del nombre del archivo del proyecto.Además, como se indica en Cómo: crear destinos específicos en soluciones mediante MSBuild.exe :
También puede crear varios proyectos a la vez:
Para reconstruir o limpia, el cambio
/t:project
de/t:project:clean
o/t:project:rebuild
fuente
/t
parámetro para cada proyecto a construir:msbuild test.sln /t:project /t:project2
/t:SlnFolder\My_Project_name
.MSBuild realmente funciona mediante el uso de proyectos, no la solución. La solución solo se usa para analizarlo en un archivo de proyecto temporal en MSBuild internamente. Debería poder construir el proyecto de interés directamente a través de MSBuild ejecutando el siguiente comando.
Hay un problema importante que sé que podría encontrar al usar el proyecto directamente en lugar de la solución: si usa la solución para expresar dependencias entre los proyectos, en lugar de agregar las referencias al proyecto y dejar que el sistema de compilación resuelva las dependencias automáticamente .
Si está aplicando una orden de compilación utilizando el archivo sln, le recomiendo trabajar esas dependencias directamente en los archivos proj y eliminarlas del archivo sln. Esto le permitirá invocar cualquier archivo de proyecto desde MSBuild directamente y todos los proyectos se construirán de forma independiente sin ningún trabajo adicional. Realmente debería tratar el archivo sln como un grupo de proyectos para facilitar el trabajo en Visual Studio y no como una entrada de compilación.
fuente
Publicar como información para futuros buscadores
Agregue lo siguiente al script de compilación y ejecútelo una vez. Esto generará los objetivos exactos y otra información que realmente utilizará msbuild.
Por ejemplo: si tiene
.
en el nombre del proyecto o carpetas, msbuild esperará_
en lugar de.
.Después de obtener la información, actualice el script de compilación con los detalles requeridos.
fuente
Para hacer esto, necesita saber cuál es el nombre-objetivo del proyecto , no necesariamente el nombre del proyecto.
Una forma de averiguarlo es usar MSBuild contra su SLN con los parámetros previstos después de establecer una variable de entorno especial llamada
MSBuildEmitSolution
al valor de1
.Recientemente tuve que hacer esto debido a un nombre muy específico para un objetivo en directorios anidados. Entonces, de mi archivo generado,
my_stuff.sln.metaproj
encontré esta línea:<Target Name="Utils\Firewall\FirewallUtils:Rebuild">
Eso significa que la línea de comandos a usar termina siendo,
fuente
.csproj
en mi caso). Yo <3 ¡ASÍ!Solo para agregar información adicional, la ejecución de msbuild en la carpeta del proyecto construirá de forma predeterminada el archivo del proyecto, ya que es el único allí.
Hay muchas variaciones del uso de msbuild de esta manera. Puede especificar el archivo de proyecto directamente.
Revise la documentación de msbuild para conocer el uso, los requisitos del archivo de proyecto y los beneficios de crear el proyecto en lugar de la solución.
Documentación de MS MSBuild
Hay beneficios de construir de esta manera como lo mencionó Mark-Smith anteriormente.
fuente