문제
빌드가 완료된 후 생성 될 파일을 복사하는 작업으로 구성된 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 태그를 추가하십시오.
제휴하지 않습니다 StackOverflow