2009-03-17 43 views
5

Tôi đang cố gắng sao chép một vài tệp trong $ (TargetDir) sang một thư mục khác (ví dụ: C: \ BinCache), nhưng vì bất kỳ lý do gì tôi không thể nhận MSBuild ngừng phàn nàn.Làm cách nào để sao chép tệp vào thư mục khác bằng MSBuild?

<Target Name="AfterBuild"> 
    <Copy SourceFiles="$(TargetDir)\*.*" 
      DestinationFolder="C:\BinCache" /> 
    </Target> 

Tôi đang làm gì sai ở đây?

EDIT: Giải pháp là sử dụng tác vụ CreateItem. Có lẽ, Visual Studio 2008 loại bỏ hạn chế này. Cảm ơn Scott!

<Target Name="AfterBuild"> 
    <CreateItem Include="$(TargetDir)\*.*"> 
    <Output TaskParameter="Include" ItemName="SourceFiles" /> 
    </CreateItem> 
    <Copy SourceFiles="@(SourceFiles)" DestinationFolder="C:\BinCache" /> 
</Target> 

Trả lời

8

SourceFiles cần phải được một danh sách Item

bạn sẽ cần một cái gì đó giống như

<Target Name="AfterBuild"> 
    <ItemGroup> 
    <SourceFiles Include="$(TargetDir)\*.*" /> 
    </ItemGroup> 
    <Copy SourceFiles="@(SourceFiles)" DestinationFolder="C:\BinCache" /> 
</Target> 

Chỉ cần nhận thấy bạn đang ở trên năm 2005, trong trường hợp đó bạn sẽ cần phải sử dụng CreateItem nhiệm vụ

+0

Visual Studio báo cáo lỗi "Phần tử bên dưới phần tử không được công nhận". Bất kỳ ý tưởng? – Dave

+0

Ok, khi nghiên cứu này tôi thấy nhiệm vụ CreateItem đã đề cập, tôi sẽ xem xét lại. – Dave

0

Chỉ cần sử dụng sự kiện trước hoặc sau xây dựng thông thường. VS hỗ trợ điều này ra khỏi hộp.

xcopy "@(TargetDir)*.dll" "\yourdir" /i /f /s /v /y 
+0

Cảm ơn, nhưng tôi cần làm điều này bằng cách sử dụng MSBuild. – Dave

Các vấn đề liên quan