Ich habe ein TeamCity-Server-Setup für meine CI-Builds. 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 ...
Die MSBuild-Befehlszeilenparameter enthalten die Parameter "/ property:" oder "/ p:". Bitte verwenden Sie stattdessen Build-Parameter.
Ich verstehe nicht, was dies bedeutet oder wie man es entfernt. Google funktioniert nicht gut (mit oder ohne Tippfehler). Ich habe die Aufgabe über die Befehlszeile (mit /verbosity:diagnostic
) ausgeführt und sie wird nicht angezeigt. Ich glaube, es handelt sich um eine TeamCity-Nachricht.
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%
Antworten:
Sie müssen in der Konfiguration
Build Parameters
unterProperties and environment
Variablen hinzufügen`
Build Step
Entfernen Sie daher in den Befehlszeilenparametern von for MSBUild alle Eigenschaften, die als angegeben sind,/p:
und fügen Sie jede dieser Eigenschaften dem hinzuBuild Parameters
(Abbildung oben), und geben Sie die Werte anquelle
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.
Es passiert alles hinter den Kulissen! Sie müssen nur die richtigen Konventionen befolgen. In Ihrem MSBuild-Skript verwenden Sie die reguläre Variablennotation
In TeamCity definieren Sie eine System- oder Umgebungsvariable
TeamCity sendet automatisch alle System- / Env-Variablen an Ihre MSBuild-Aufgabe und entfernt den Teil 'System' oder 'Env'. Und Sie müssen nicht
/property:DbPath=system.DbPath
in Ihre TeamCity-Aufgabe schreiben .quelle
$(MyVar)
da ich eine TeamCity-Umgebungsvariable habe, die einen Wert für ein doofes cmd-Zeilen-Tool bereitstellt, das ich mit MSBuild aufrufe.