How do I pass this common property to MSBuild using TeamCity?

AnneTheAgile picture AnneTheAgile · Jan 10, 2012 · Viewed 11.7k times · Source

I am using the TeamCity Visual Studio runner. I want to add a setting that is not accessible from Visual Studio.

/Property:FileAlignment=4096

I typed that directly into the build step "Command line parameters." The build log shows the error:

MSBuild command line parameters contains "/property:" or "/p:" parameters. Please use Build Parameters instead.

I don't understand how to provide this to MSBuild from TeamCity and get rid of this warning!

1. Which kind of parameter should I use?

There are 3 kinds:

  • Configuration parameters
  • System properties
  • Environment variables.

I don't want an environment or system variable because I don't want this build to depend on anything external. I am going to try Config right now, but then I'm not sure I'm filling it in right.

2. How can I tell this parameter is actually getting used?

The build log, which seems only to have navigable/foldable xml-like levels with their program, did not say the build parameters.

Answer

Alex picture Alex · Jul 11, 2012

You should use "System properties". Don't worry about the name, that's just how TeamCity calls it. They are regular properties. You can add them in "Edit Configuration Settings > 7. Build Parameters".

For example, you can add the system property as follows:

Name: system.FileAlignment

Type: System property (system.)

Value: 4096

Note that TeamCity will insist on the "system." prefix. It doesn't matter because the MSBuild script will still see it as $(FileAlignment).