2015-01-07 1 views
0

저는 C# 프로젝트 (vs2013)를 가지고 있으며이 프로젝트에서는 빌드하기 전에 항상 깨끗한 솔루션을 만들고 싶습니다. 이제 빌드하기 전에 깨끗한 프로젝트를 (반복해서) 선택할 수 있지만 .csproj 파일에서 Target 태그를 사용하여 가능해야합니다. 나는 인터넷에서 찾기 시작하고 작동하지 않았다 해결책을했다 :csproj의 MSBuild 타겟은 모든 빌드 전에 깨끗하게 처리합니다.

<Target Name="Clean" 
     BeforeTargets="Build"> 
    <Message Text="### Start Clean before build" 
      Importance="high" /> 
    <Exec Command="CALL &quot;$(MSBuildBinPath)\msbuild.exe&quot; &quot;$(MSBuildProjectFullPath)&quot; /t:Clean" /> 
    <Message Text="### Finished Clean before build" 
      Importance="high" /> 
</Target> 

을하지만이 msbuild를 또 다시 시작하는 무한 루프가 발생합니다.

답변

2

대상을 재귀 적으로 정의했습니다. "Clean"이라고하지 말고 "PreBuildClean"또는 유사한 이름을 지정하십시오.

또한 Exec을 사용하여 외부에서 msbuild를 호출 할 필요가 없습니다. CallTarget 태스크를 사용하여 대상을 직접 호출 할 수 있습니다.

<Target Name="PreBuildClean" 
    BeforeTargets="Build"> 
    <Message Text="### Start Clean before build" 
      Importance="high" /> 
    <CallTarget Targets="Clean"/> 
    <Message Text="### Finished Clean before build" 
      Importance="high" /> 
</Target> 

재 구축 대상은 빌드가 바로 청소 다음에, 그래서 당신이 필요 했어 왜 솔루션 만에 하나 개 특정 프로젝트가 아닌 나는 확실하지 않다.

관련 문제