I have a TeamCity server setup to do my CI builds. I'm building and testing a C# solution and running some custom MSBuild tasks. One of these tasks is printing a warning in my build output...
MSBuild command line parameters contains "/property:" or "/p:" parameters. Please use Build Parameteres instead.
I don't understand what this means or how to remove it. It doesn't Google well (with or without the typo). I ran the task from the command line (with /verbosity:diagnostic
) and it doesn't appear, so I believe it's a TeamCity message.
The MSBuild task is
<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>
And the relevant TeamCity step information is
MSBuild version: 4.0
MSBuild ToolsVersion: 4.0
Run platform: x64
Targets: InstallDb
Command line parameters: /property:DbPath=%env.DB_PATH%
Last modified: 19 July 2022. Build parameters are name-value pairs, defined by a user or provided by TeamCity, which can be used in a build. They help flexibly share settings and pass them to build steps.
In Build Steps, click Auto-detect build steps, and then select the proposed steps you want to add to the current build configuration. You can change their settings afterwards. When scanning the repository, TeamCity progressively searches for project files on the two highest levels of the source tree.
teamcity.buildType.id. none. The unique ID used by TeamCity to reference the build configuration the current build belongs to.
You have to add Build Parameters
under Properties and environment
variables in the configuration
`
So in the command line parameters in the Build Step
for MSBUild, remove any property that is specified as /p:
and add each of those to the Build Parameters
( screenshot above) and give the values
It all happens behind the scenes! You just have to follow the right conventions. In your MSBuild script, you use the regular variable notation
$(DbPath)
And in TeamCity, you define a system or env variable
system.DbPath
TeamCity will automagically send all of its system/env variables to your MSBuild task, removing the 'system' or 'env' part. And you don't have to write /property:DbPath=system.DbPath
in your TeamCity task.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With