0
비어 :MSBuild를 RecursiveDir 나는 우리의 저장소에있는 모든 솔루션을 구축하기 위해 사용자의 MSBuild 스크립트를 만들려고 해요
스크립트 잘 % (RecursiveDir)의 평가 마지막 복사 작업을 제외하고 작동
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<SourceHome Condition=" '$(SourceHome)'=='' ">..\</SourceHome>
<ToolsHome Condition=" '$(ToolsHome)'=='' ">.\Tools\</ToolsHome>
<Configuration Condition=" '$(Configuration)'=='' ">Release</Configuration>
<DestFolder Condition=" '$(DestFolder)'=='' ">.\$(Configuration)\</DestFolder>
</PropertyGroup>
<ItemGroup>
<AllSolutions Include="$(SourceHome)**\*.sln"/>
</ItemGroup>
<Target Name="Default" DependsOnTargets="Clean;Build;Assemble"/>
<Target Name="Clean">
<Message Text="Cleaning projects..."/>
<MSBuild Projects="@(AllSolutions)"
Targets="Clean"
Properties="Configuration=$(Configuration);"/>
</Target>
<Target Name="RestorePackages">
<Message Text="Restoring packages..."/>
<Exec Command="echo y| "$(ToolsHome)NuGet\NuGet.exe" restore "%(AllSolutions.Identity)""/>
</Target>
<Target Name="Build" DependsOnTargets="RestorePackages">
<Message Text="Building projects..."/>
<MSBuild Projects="@(AllSolutions)"
ContinueOnError="true"
Properties="Configuration=$(Configuration)">
<Output ItemName="OutputFiles" TaskParameter="TargetOutputs"/>
</MSBuild>
</Target>
<Target Name="Assemble">
<Message Text="Assembling output..."/>
<RemoveDir Directories="$(DestFolder)"/>
<Copy SourceFiles="@(OutputFiles)"
DestinationFiles="@(OutputFiles->'$(DestFolder)%(RecursiveDir)%(Filename)%(Extension)')"/>
</Target>
</Project>
빈 문자열, 루트 대상 폴더에있는 모든 파일을 가하고 ... 나는 내가 여기서 잘못하고있는 것을 볼 수 없습니다.
나는
MSBuild ITaskItem RecursiveDir metadata disappears을 발견하지만
는 또한
this 및
this 스레드를 찾았지만 어떤 경로에는 이중 슬래시 또는 괄호가 없습니다 ... 여기에 적용하지 않는 것 같습니다. Heres는 복사 작업시 출력의 예 : 에서
복사 파일. "X : \ 내 \의 repo \ SolutionDir PROJECTDIR \ 빈 \ 릴리스 \ Example.dll \" 에 "\ 릴리스 \ 예. dll ".
Output을 사용하지 않고 대신 Assembly 작업에서 복사 할 파일을 사용하여 새 ItemGroup을 만드는 방법이 있습니까? – moggizx