Mam konfigurację serwera TeamCity do tworzenia moich kompilacji CI. Buduję i testuję rozwiązanie C # i uruchamiam niektóre niestandardowe zadania programu MSBuild. Jednym z tych zadań jest drukowanie ostrzeżenia w wynikach kompilacji ...
Parametry wiersza polecenia programu MSBuild zawierają parametry „/ property:” lub „/ p:”. Zamiast tego użyj parametrów kompilacji.
Nie rozumiem, co to oznacza i jak to usunąć. Nie Google dobrze (z literówką lub bez). Uruchomiłem zadanie z wiersza poleceń (z /verbosity:diagnostic
) i nie pojawia się, więc uważam, że jest to wiadomość TeamCity.
Zadaniem programu MSBuild jest
<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>
A odpowiednie informacje o krokach TeamCity to
Wersja MSBuild: 4.0
MSBuild ToolsVersion: 4.0
Uruchom platformę: x64
Cele: InstallDb
Parametry wiersza polecenia: /property:DbPath=%env.DB_PATH%
Odpowiedzi:
Musisz dodać
Build Parameters
podProperties and environment
zmienne w konfiguracji`
Więc w parametrach wiersza polecenia w
Build Step
for MSBUild usuń wszystkie właściwości określone jako/p:
i dodaj każdą z nich doBuild Parameters
(zrzut ekranu powyżej) i podaj wartościźródło
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.
To wszystko dzieje się za kulisami! Musisz tylko przestrzegać odpowiednich konwencji. W skrypcie MSBuild używasz zwykłej notacji zmiennej
W TeamCity definiujesz zmienną systemową lub środowiskową
TeamCity automatycznie wyśle wszystkie swoje zmienne systemowe / env do zadania MSBuild, usuwając część „system” lub „env”. I nie musisz pisać
/property:DbPath=system.DbPath
w swoim zadaniu TeamCity.źródło
$(MyVar)
ponieważ mam zmienną środowiska TeamCity, która zapewnia wartość dla głupkowatego narzędzia wiersza polecenia cmd, które wywołuję z MSBuild.