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="$(DbPath)"" />
<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%
Sie müssen Build Parameters
unter Properties and environment
Variablen in der Konfiguration hinzufügen
`
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
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.