webentwicklung-frage-antwort-db.com.de

TeamCity empfiehlt, in einem MSBuild-Schritt "Build Parameters" anstelle von "/ property:" zu verwenden. Was bedeutet das?

Ich habe ein TeamCity-Server-Setup, um meine CI-Builds durchzuführen. Ich erstelle und teste eine C # -Lösung und führe einige benutzerdefinierte MSBuild-Aufgaben aus. Eine dieser Aufgaben ist das Drucken einer Warnung in meiner Build-Ausgabe ...

MSBuild-Befehlszeilenparameter enthalten die Parameter "/ property:" oder "/ p:". Bitte verwenden Sie stattdessen Build Parameter.

Ich verstehe nicht, was das bedeutet oder wie man es entfernt. Google funktioniert nicht gut (mit oder ohne Tippfehler). Ich habe die Aufgabe über die Befehlszeile ausgeführt (mit /verbosity:diagnostic) und es wird nicht angezeigt, daher glaube ich, dass es eine TeamCity-Nachricht ist.

Die MSBuild-Aufgabe lautet

<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>

Und die relevanten TeamCity-Schrittinformationen sind

MSBuild-Version: 4.0
MSBuild ToolsVersion: 4.0
Plattform ausführen: x64
Ziele: InstallDb
Befehlszeilenparameter: /property:DbPath=%env.DB_PATH%

76

Sie müssen Build Parameters unter Properties and environment Variablen in der Konfiguration hinzufügen

`enter image description here

Entfernen Sie in den Befehlszeilenparametern in Build Step Für MSBUild alle Eigenschaften, die als /p: Angegeben sind, und fügen Sie diese jeweils zum Build Parameters Hinzu (Abbildung oben) Werte

57
manojlds

Es passiert alles hinter den Kulissen! Sie müssen nur die richtigen Konventionen befolgen. In Ihrem MSBuild-Skript verwenden Sie die reguläre Variablennotation

$(DbPath)

Und in TeamCity definieren Sie ein System oder eine Umgebungsvariable

system.DbPath

TeamCity sendet automatisch alle seine System-/Umgebungsvariablen an Ihre MSBuild-Aufgabe und entfernt dabei den 'System'- oder' Umgebungs'-Teil. Und du musst nicht schreiben /property:DbPath=system.DbPath in Ihrer TeamCity-Aufgabe.

38