Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a single MSBuild and TFSBuild variable that will point to where the binaries are?

Is there there a property that can be used in either a Visual Studio build or a TFS build that will always point to where the binaries are?

Meaning that when I build in Visual Studio it will point to C:\MySolution\MyProject\bin\Release and in a TFS Build it will point to C:\Build\Path\MySoution\Binaries

And if there is not one, why not? This seems like a common, basic need/feature.

like image 643
Vaccano Avatar asked Feb 03 '12 18:02

Vaccano


1 Answers

There is an $OutDir property, which you can use in things like post-build events.

In a VS2010 build, it will be a relative path from the current project to the binaries, so it will be "bin\Debug\" for example. (The full path to the output is $TargetDir, which is $(ProjectDir)\$(Outdir)).

$OutDir is overriden during TFS builds to point to the path where it puts your binaries:

 <OutDir Condition=" '%(ConfigurationToBuild.PlatformToBuild)' != 'Any CPU' ">$(BinariesRoot)\%(ConfigurationToBuild.PlatformToBuild)\%(ConfigurationToBuild.FlavorToBuild)\</OutDir>
 <OutDir Condition=" '%(ConfigurationToBuild.PlatformToBuild)' == 'Any CPU' ">$(BinariesRoot)\%(ConfigurationToBuild.FlavorToBuild)\</OutDir>

EDIT:

To get a full path in either case, one option you could use is something like this:

IF '$(BuildingInsideVisualStudio)'=='true' (
  COPY SomeFile $(TargetDir)$(OutDir)
) ELSE (
  COPY SomeFile $(OutDir)
)
like image 191
Michael Edenfield Avatar answered Oct 23 '22 09:10

Michael Edenfield