2012-10-04 2 views
0

.NET 솔루션 출력을 빌드하고 배포 폴더에 복사하는 데 한 가지 문제가 있습니다.MSBuild 증분 빌드 오류

내가 원하는 것은. 솔루션을 빌드하고 출력을 C : \ TempOutput에 넣습니다.

그런 다음 C : \ TempOutput의 아웃 파일을 다른 배포 폴더로 복사합니다.

는 C에서 폴더 생성이 시도 1에서

: \ TempOutput를하고 또한 폴더 "Exec에서 \ 디버그 \ 빈"을 만들지 만 C에서 파일을 복사하지 않습니다

이 폴더에 출력 DLL 및 EXE 파일을 생성합니다 : \ TempOutput

가 더 출력이 없기 때문에 대상 "CopyBuildFiles을"건너 뛰기 :

로그

대상 CopyBuildFiles가 있다고 말한다. 내가 다시이 시간 C에서이 파일을 복사 스크립트를 실행하면

: \ TempOutput을 "Exec에서 \ 디버그 \ 빈"

나는 뭔가를 놓치고 있습니까 하는가? 첫 번째 시도에서 출력을 감지하지 못하는 이유는 무엇입니까? 다음

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Deploy"> 

    <PropertyGroup> 
    <ProjectName>Common Projects</ProjectName> 
    <SolutionFilePath>..\..\Solution\Solution.sln</SolutionFilePath> 

    <!--Build/Rebuild--> 
    <BuildType>Build</BuildType> 

    <!--Debug -> output : local--> 
    <!--Release -> output : local--> 
    <!--ProduDbg -> output : X:\Debug--> 
    <!--ProduRel -> output : X:\Release--> 

    <BuildMode>Debug</BuildMode> 

    <OutputPath>..\Exec\$(BuildMode)\Bin\</OutputPath> 
    <ExecPath>..\..\bin\$(BuildMode)</ExecPath> 

    <DestinitionFolder>$(OutputPath)</DestinitionFolder> 
    <SubDirPath>$(ExecPath)\**</SubDirPath> 

    <BuildFolder>C:\TempOutputs\</BuildFolder> 

    </PropertyGroup> 


    <ItemGroup> 
    <File Include=" 
      $(BuildFolder)\*.* 
      " 

      Exclude="   
      $(BuildFolder)\*.vshost* 
      " 
      > 

    </File> 

    </ItemGroup> 

    <Target Name="PreBuild"> 
    <MakeDir Directories="$(BuildFolder)" /> 
    <MakeDir Directories="$(DestinitionFolder)" /> 
    </Target> 

    <Target Name="Compile"> 

    <MakeDir Directories="$(BuildFolder)" /> 
    <!-- Build does build only--> 

    <Message Text="*******************************************************"/> 
    <Message Text="-->Building $(ProjectName)"/> 
    <Message Text="*******************************************************"/> 

    <Message Text="*******************************************************"/> 
    <Message Text="-->Building in [$(BuildMode) | $(BuildType)] mode"/> 
    <Message Text="*******************************************************"/> 

    <MSBuild Projects="$(SolutionFilePath)" Targets="$(BuildType)" Properties="Configuration=$(BuildMode);OutDir=$(BuildFolder)"/>  
    </Target> 


    <Target Name="CopyBuildFiles" 
      Inputs="@(File)" 
      Outputs= 
      "@(File->'$(DestinitionFolder)%(RecursiveDir)%(Filename)%(Extension)')"> 

    <Copy SourceFiles="@(File)" 
      DestinationFiles="@(File->'$(DestinitionFolder)%(RecursiveDir)%(Filename)%(Extension)')" 
      /> 
    </Target> 

    <Target Name="Deploy"> 

    <CallTarget Targets="PreBuild"/> 
    <CallTarget Targets="Compile"/> 

    <Message Text="*******************************************************"/> 
    <Message Text="@(File)"/> 
    <Message Text="$(DestinitionFolder)"/>  
    <Message Text="*******************************************************"/> 


    <CallTarget Targets="CopyBuildFiles"/> 
    </Target> 

</Project> 

답변

0

이 비트

<Target Name="CopyBuildFiles"    
      Inputs="@(File)" 
      Outputs="@(File->'$(DestinitionFolder)%(File.RecursiveDir)%(File.Filename)%(File.Extension)')"> 

     <Copy SourceFiles="@(File)" 
      DestinationFiles="@(File->'$(DestinitionFolder)%(File.RecursiveDir)%(File.Filename)%(File.Extension)')"/> 
    </Target> 
를 변경 시도를 msbuild 스크립트입니다