We want to have a local "one-click build" experience. I.e., we want a (MSBuild) build script that we can start locally to build our code, run the tests, and package the results. At the same time, we want a TeamCity build that does the same things, but additionally performs coverage analysis for the tests and runs FXCop and inspections in-between compilation and tests.
Setting up these things is easy if you use separate TeamCity build steps for each of those items: using an NUnit build step, we can enable dotCover with it; inserting FXCop and Inspections build steps inbetween the compilation and tests is also easy, if both of them are separate build steps.
However, this means that now we have to duplicate stuff between TeamCity and the build script, which I don't like at all. In particular, while we could simply provide small targets (Clean, Compile, Package) in our build script and call each of them in a dedicated TeamCity build step (so that we can insert inspections in-between), we still have to duplicate the test runner arguments (assemblies to run tests on, test isolation options, etc.).
Is there a better practice for this scenario in current TeamCity versions (8.0, 8.1, 9)?