Tengo una configuración de servidor TeamCity para hacer mis compilaciones de CI. Estoy compilando y probando una solución C # y ejecuto algunas tareas personalizadas de MSBuild. Una de estas tareas es imprimir una advertencia en la salida de mi compilación ...
Los parámetros de la línea de comandos de MSBuild contienen parámetros "/ property:" o "/ p:". En su lugar, utilice Build Parameteres.
No entiendo qué significa esto ni cómo eliminarlo. No busca bien en Google (con o sin el error tipográfico). Ejecuté la tarea desde la línea de comando (con /verbosity:diagnostic
) y no aparece, así que creo que es un mensaje de TeamCity.
La tarea de MSBuild es
<Target Name="InstallDb">
<MakeDir Directories="$(DbPath)" />
<Exec Command="sqlcmd -S .\sqlexpress -i db\OmnyxDatabaseDrop.sql" />
<Exec Command="sqlcmd -S .\sqlexpress -i db\OmnyxDatabaseCreate.sql -v DbPath="$(DbPath)"" />
<Exec Command="sqlcmd -S .\sqlexpress -i db\OmnyxDatabaseProgrammability.sql" />
</Target>
Y la información de paso relevante de TeamCity es
Versión de MSBuild: 4.0
MSBuild ToolsVersion: 4.0
Ejecutar plataforma: x64
Destinos: InstallDb
Parámetros de línea de comandos: /property:DbPath=%env.DB_PATH%
Respuestas:
Tienes que agregar
Build Parameters
bajoProperties and environment
variables en la configuración'
Entonces, en los parámetros de la línea de comando en
Build Step
MSBUild, elimine cualquier propiedad que se especifique/p:
y agregue cada una de ellas a laBuild Parameters
(captura de pantalla anterior) y proporcione los valoresfuente
Build parameters are passed to a build. Build parameters can be of two types: system properties and environment variables. Environment variables are supported by any build runner, however system properties are only available for build runners with property notion. For example, Command line runner does not support properties.
¡Todo sucede detrás de escena! Solo tienes que seguir las convenciones correctas. En su secuencia de comandos de MSBuild, usa la notación de variable regular
Y en TeamCity, define un sistema o variable env
TeamCity enviará automáticamente todas sus variables de sistema / env a su tarea de MSBuild, eliminando la parte 'sistema' o 'env'. Y no tiene que escribir
/property:DbPath=system.DbPath
en su tarea de TeamCity.fuente
$(MyVar)
porque tengo una variable de entorno de TeamCity que proporciona un valor para una herramienta de línea cmd tonta a la que llamo con MSBuild.