문제

빌드가 완료된 후 생성 될 파일을 복사하는 작업으로 구성된 Build.Proj 파일을 만들었습니다. 문제는이 파일이 처음으로 복사되지 않았으며 파일을 복사 할 수 있도록 Build.proj에서 MSBuild를 다시 실행해야한다는 것입니다. 누구든지 다음 build.proj 파일에 무엇이 잘못되었는지 말해 줄 수 있습니까?

<Configuration Condition="'$(Configuration)' == ''">Debug</Configuration>

<SourcePath Condition="'$(SourcePath)' == ''">$(MSBuildProjectDirectory)</SourcePath> 

<BuildDir>$(SourcePath)\build</BuildDir>

</PropertyGroup> 

<ItemGroup> 
    <Projects 
       Include="$(SourcePath)\src\myApp\application.csproj">  
    </Projects> 
</ItemGroup> 

<Target Name="Build">
   <Message text = "Building project" />    
   <MSBuild   
     Projects="@(Projects)" 
     Properties="Configuration=$(Configuration)" /> 
</Target>

<ItemGroup>
   <OutputFiles Include ="$(MSBuildProjectDirectory)\**\**\bin\Debug\*.*"/>
</ItemGroup>

<Target Name="CopyToBuildFolder">
   <Message text = "Copying build items" />
   <Copy SourceFiles="@(OutputFiles)" DestinationFolder="$(BuildDir)"/>
</Target>

<Target Name="All"
   DependsOnTargets="Build; CopyToBuildFolder"/>

</Project> 
도움이 되었습니까?

해결책

항목 그룹은 스크립트가 구문 분석되면 평가됩니다. 그 당시 파일은 아직 없습니다. 파일을 찾으려면 대상 내에서 항목 그룹을 채워야합니다.

  <!-- SQL Scripts which are needed for deployment -->
  <Target Name="BeforeCopySqlScripts">
    <CreateItem Include="$(SolutionRoot)\04\**\Databases\**\*.sql">
      <Output ItemName="CopySqlScript" TaskParameter="Include"/>
    </CreateItem>
  </Target>

이 예제는 포함 속성의 표현식을 사용하여 "CopysqlScript"라는 항목 그룹을 만듭니다.

편집하다:

이제 스크립트를 읽을 수 있습니다 : CopyTobuildfolder Target 내에서 CreateItem 태그를 추가하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top