- Define in your targets file
Configuration
property default value
- Use this property value in a output path
- Instead of
AfterTargets
use DependsOnTargets
, but as Default target define the last one, so targets will execute in the same order but just chained in reverse order
- Save XML below as
final.targets
or how would you like name it
- Run in command line msbuild
final.targets /p:Configuration=RELEASE
for release configuration build
<Project ToolsVersion="4.0"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
DefaultTargets="CopyBinOutput">
<PropertyGroup>
<!-- define defaults -->
<Configuration Condition="$(Configuration)==''">DEBUG</Configuration>
</PropertyGroup>
<Choose>
<When Condition=" '$(Configuration)'=='DEBUG' ">
<ItemGroup>
<BinFiles Include=".\src\Sample.Core\Sample.Core.Infrastructure\bin\Debug\**\*.*" />
</ItemGroup>
</When>
<When Condition=" '$(Configuration)'=='RELEASE' ">
<ItemGroup>
<BinFiles Include=".\src\Sample.Core\Sample.Core.Infrastructure\bin\Release\**\*.*"/>
</ItemGroup>
</When>
</Choose>
<Target Name="EntryPointTarget">
<Message Text="EntryPointTarget started" />
<!-- here is build your solution -->
</Target>
<Target Name="CopyBinOutput" DependsOnTargets="EntryPointTarget">
<Message Text="CopyBinOutput started" />
<Copy SkipUnchangedFiles="True" OverWriteReadOnlyFiles="true"
SourceFiles="@(BinFiles)"
DestinationFiles="@(BinFiles->'.\binaries\$(Configuration)\%(RecursiveDir)%(Filename)%(Extension)')" />
<Message Text="CopyBinOutput finished, destination is .\binaries\$(Configuration)" />
</Target>
</Project>