Pregunta

Estoy usando el runner de TeamCity Visual Studio. Quiero agregar una configuración que no sea accesible desde Visual Studio.

/Property:FileAlignment=4096

Escribí eso directamente en el paso de compilación "Parámetros de línea de comando". El registro de compilación muestra el error:

Los parámetros de línea de comandos MSBuild contienen "/Propiedad:" o "/P:" Parámetros. Utilice los parámetros de compilación en su lugar.

¡No entiendo cómo proporcionar esto a MSBuild de TeamCity y deshacerme de esta advertencia!

1. ¿Qué tipo de parámetro debo usar?

Hay 3 tipos:

  • Parámetros de configuración
  • Propiedades del sistema
  • Variables de entorno.

No quiero una variable de entorno o sistema porque no quiero que esta compilación dependa de cualquier cosa externa. Voy a probar la configuración en este momento, pero no estoy seguro de que la esté llenando bien.

2. ¿Cómo puedo decir que este parámetro se está acostumbrando?

El registro de compilación, que solo parece tener niveles de XML navegables/plegables con su programa, no dijo los parámetros de compilación.

¿Fue útil?

Solución 3

Esto se resolvió. Para aclarar, Anthony dijo cómo resolver el problema en la línea de comandos usando MSBuild. También se puede resolver en la línea de comandos usando Devenv, según un boleto con Microsoft, la sintaxis es:

 devenv ..\..\mysolution.sln /Rebuild /Property:Config=Release;Platform=AnyCPU;Filealignment=512

Sin embargo, lo que quería era obtener la "construcción de estudio de Visual" de TeamCity para aceptar el parámetro. Esto se logró de la siguiente manera. En el cuadro para parámetros de línea de comando, ingresé:

/Property:FileAlignment=filealignment v:diag

Entonces la pestaña de salida para los parámetros de compilación muestra:

User Defined Parameters
Name                    Value passed to build
system.filealignment    512
system.verbosity        diagnostic

Otros consejos

Debe usar "Propiedades del sistema". No se preocupe por el nombre, así es como TeamCity lo llama. Son propiedades regulares. Puede agregarlos en "Editar configuración de configuración> 7. Crear parámetros".

Por ejemplo, puede agregar la propiedad del sistema de la siguiente manera:

Nombre: System.FileLeignment

Tipo: Propiedad del sistema (Sistema).

Valor: 4096

Tenga en cuenta que TeamCity insistirá en el "sistema". prefijo. No importa porque el script MSBuild aún lo verá como $ (FileLignment).

La Ciudad del Team documentación Define los parámetros de construcción como "Una forma conveniente de pasar la configuración genérica o específica del entorno en el script de compilación". Los parámetros de configuración proporcionan una forma de anular algunas configuraciones en una configuración de compilación heredada de una plantilla. Nunca se pasan a una construcción. Los parámetros del sistema y el entorno se proporcionan a su script de compilación. Las variables de entorno realmente se establecen en el sistema (no puedo encontrar ninguna documentación para esto). Los parámetros del sistema son pasó al motor de guión.

TeamCity proporciona automáticamente variables del sistema a la línea de comandos real (parece que se ejecuta el Runner de Visual Studio msbuild.exe y no devenv.exe). Supongo que esa CiCity está construyendo un comando como

cmd> msbuild.exe my-solution.sln /p:FileAlignment=4096

Intenté esto en mi línea de comando, solo para asegurarme de que debería trabajo (agregué el /v:diagnostic bandera). La verbosidad diagnóstica hace que MSBuild imprima todas sus propiedades en la consola. Verifiqué que FileAlignment=4096 estaba allí.

Que /FileAlignment La propiedad parece ser un propiedad especial Eso es automáticamente en cualquier .csproj expediente. Entonces deberías estar listo para ir. Puede verificar los parámetros reales que se pasaron a la compilación haciendo clic en cualquier compilación y viendo la pestaña 'Parámetros de compilación'. Hay una sección que muestra los "parámetros reales en el agente".

(Esto es -754 chars para un comentario, por lo que debe escribirse como un puesto)

Hola Anthony, ¡Gracias por responder! Sí, MSBuild en la línea de comandos también funciona bien para mí y los archivos del proyecto pueden almacenar las propiedades de archivo FileLignment. En nuestro caso, tras la discusión con Microsoft, parece necesario que especifique la alineación de todo el Build en toda la solución, es decir, en los argumentos de comando, además de arreglar los proyectos (que ya he hecho).

No aparecerá ningún parámetro que especifique en el elemento GUI ( /Build Step /Command Line Parameters /) en los parámetros de pestaña /construcción /. Por supuesto, algunos no se compilarán en absoluto.

También tengo un comportamiento aún más extraño donde uso /verbosidad: diagnóstico vs /verbosidad: mínimo causa un registro de construcción más largo para lo mínimo! Parece que Diagnostic está ocultando los detalles dentro de una tarea especial, que es parte de TeamCity y no de mí; [16:24:05]: anular el objetivo "satellitllsprojectOutputGroup" en el proyecto "C: Windows Microsoft.net Framework v3.5 Microsoft.common.Targets" con el objetivo "SatellitedlitlSprojectOutputgroup" del proyecto "C: Windows Windows Windows Microsoft.net Framework v3.5 Microsoft.winfx.targets ". Estoy luchando con esto porque el registro de salida de compilación generado por TeamCity es muy agradable de tener como View de Tree. Eso funciona con la compilación SLN, pero el uso de cualquier archivo BAT no puede producir un archivo de registro con el formato de árbol bonito (XML, presumiblemente).

Si tiene más ideas, me encantará escucharlas, ¡y gracias por sus ediciones! :)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top