web-dev-qa-db-fra.com

TeamCity dit d'utiliser "Build Parameters" au lieu de "/ property:" dans une étape MSBuild. Qu'est-ce que ça veut dire?

J'ai une configuration de serveur TeamCity pour faire mes builds CI. Je crée et teste une solution C # et j'exécute certaines tâches MSBuild personnalisées. L'une de ces tâches consiste à imprimer un avertissement dans ma sortie de génération ...

Les paramètres de ligne de commande MSBuild contiennent les paramètres "/ propriété:" ou "/ p:". Veuillez plutôt utiliser Build Parameteres.

Je ne comprends pas ce que cela signifie ni comment le supprimer. Cela ne fonctionne pas bien sur Google (avec ou sans faute de frappe). J'ai exécuté la tâche à partir de la ligne de commande (avec /verbosity:diagnostic) et il n'apparaît pas, donc je crois que c'est un message TeamCity.

La tâche MSBuild est

<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=&quot;$(DbPath)&quot;" />
  <Exec Command="sqlcmd -S .\sqlexpress -i db\OmnyxDatabaseProgrammability.sql" />
</Target>

Et les informations pertinentes sur l'étape TeamCity sont

Version MSBuild: 4.0
MSBuild ToolsVersion: 4.0
Exécuter la plate-forme: x64
Cibles: InstallDb
Paramètres de ligne de commande: /property:DbPath=%env.DB_PATH%

76
Anthony Mastrean

Vous devez ajouter Build Parameters sous Properties and environment variables dans la configuration

"enter image description here

Ainsi, dans les paramètres de ligne de commande dans le Build Step pour MSBUild, supprimez toute propriété spécifiée comme /p: et ajoutez chacun de ceux-ci au Build Parameters (capture d'écran ci-dessus) et donnez les valeurs

57
manojlds

Tout se passe dans les coulisses! Il vous suffit de suivre les bonnes conventions. Dans votre script MSBuild, vous utilisez la notation de variable régulière

$(DbPath)

Et dans TeamCity, vous définissez une variable système ou env

system.DbPath

TeamCity enverra automatiquement toutes ses variables système/env à votre tâche MSBuild, en supprimant la partie "système" ou "env". Et vous n'avez pas besoin d'écrire /property:DbPath=system.DbPath dans votre tâche TeamCity.

38
Anthony Mastrean