4

次の MSBuild ターゲット ファイルがあります (以下)。

デフォルトの後に追加のステップを追加して、すべてのプロジェクト \bin\Debugまたはプロジェクトの 1 つから、ファイルが実行されたのと同じフォルダーにあるフォルダーにコピーするにはどうすればよいですか?\bin\Releasebinaries.targets

デバッグまたはリリースをさらにうまく使用するかどうかを賢くすることができれば。

更新:これまでに取得したコードを更新しました。この msbuild を開始する .bat ファイルをリリースとデバッグの 2 つの動作モードで実行し、Binaries フォルダーに 2 つの異なるフォルダーを作成できると便利です。

  <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>
4

1 に答える 1

2
  1. Configurationターゲットファイルでプロパティのデフォルト値を定義します
  2. このプロパティ値を出力パスで使用します
  3. AfterTargetsを使用する代わりにDependsOnTargets、デフォルトのターゲットとして最後のターゲットを定義するため、ターゲットは同じ順序で実行されますが、逆の順序でチェーンされます
  4. 以下のXMLを名前を付けて保存するfinal.targetsか、どのように名前を付けますか
  5. final.targets /p:Configuration=RELEASEリリース構成ビルドのコマンドラインmsbuildで実行します
<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>
于 2012-11-28T20:17:25.620 に答える