2012-11-28 37 views
4

我有以下MSBuild目标文件(下)。MSBuild - 复制所有斌输出 - 调试|发布

我将如何添加默认后,一个额外的步骤,以复制所有从项目到一个名为binaries文件夹是在同一文件夹中.targets文件之一\bin\Debug\bin\Release已运行?

如果我能明白它是否更好地使用Debug或Release。

UPDATE:我已更新我的代码,目前为止已得到。仍然将是不错的能够运行在两种运行模式踢这个的MSBuild关闭.bat文件:发布和调试,然后有两个不同的文件夹中的文件夹中的二进制文件

<ItemGroup> 
    <SolutionFiles Include=".\**\*.sln"/> 
    </ItemGroup> 

    <ItemGroup> 
    <DebugBinFiles Include=".\src\Sample.Core\Sample.Core.Infrastructure\bin\Debug\**\*.*"/> 
    </ItemGroup> 

    <ItemGroup> 
    <ReleaseBinFiles Include=".\src\Sample.Core\Sample.Core.Infrastructure\bin\Release\**\*.*"/> 
    </ItemGroup> 

    <Target Name="Default" AfterTargets="AfterBuild"> 
    <MSBuild Projects="@(SolutionFiles)" Condition=""/> 
    </Target> 

    <Target Name="AfterBuild"> 
    <Copy SourceFiles="@(BinFiles)" DestinationFolder=".\binaries\Debug" /> 
    </Target> 

</Project> 
+0

有你尝试过什么? – sll

回答

1
  1. 定义在你的目标文件Configuration属性默认值
  2. 使用该属性值的输出路径
  3. 代替AfterTargets使用DependsOnTargets,但作为默认的目标定义的最后一个,所以针对无线会执行以相同的顺序,但只是链接在下面
  4. 保存XML颠倒顺序final.targets或你喜欢如何命名发布配置构建在命令行的MSBuild final.targets /p:Configuration=RELEASE
  5. 运行
<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>