Đối với những người gặp sự cố khi sử dụng câu trả lời của Chris , đây là giải pháp cho Visual Studio 2012 và mới hơn:
<Target Name="ContentsBeforeBuild" AfterTargets="BeforeBuild">
<ItemGroup>
<Content Include="images\**" />
</ItemGroup>
</Target>
Như Chris đã đề cập trong câu trả lời của mình - Visual Studio sẽ không chạm vào <Target>
phần này, ngay cả khi bạn tự thao tác (thêm / xóa tệp) với thư mục đích.
Xin lưu ý rằng bạn nên bao gồm một thư mục con nơi chứa các tệp (trong trường hợp trên là nó images
). Visual Studio / MSBuild sẽ đặt các tệp đó trong cùng một thư mục trong cấu trúc dự án. Nếu bạn không sử dụng thư mục con, các tệp sẽ được đặt ở gốc của cấu trúc dự án.
Để có giải thích nhanh về các ký tự đại diện:
**
có nghĩa là mọi thứ đệ quy (tệp, thư mục con và tệp trong đó)
*.ext
sẽ bao gồm tất cả các tệp có phần mở rộng ext
trong thư mục cấp cao nhất, nhưng không bao gồm các thư mục con
- Ví dụ,
*.ext
có thể là *.png
, *.js
vv Bất kỳ phần mở rộng tập tin sẽ làm việc
**\*.ext
sẽ bao gồm tất cả các tệp có phần mở rộng ext
từ thư mục cấp cao nhất và tất cả các thư mục con.
- Xem câu trả lời từ Làm cách nào để sử dụng các mẫu đặt tên Nant / Ant? để được giải thích đầy đủ hơn với các ví dụ.
Để hoàn thành, xin lưu ý rằng có sự khác biệt giữa việc sử dụng <Target>
và không sử dụng nó.
Với <Target>
phương pháp này, Visual Studio sẽ không hiển thị các tệp trong Trình khám phá giải pháp.
<Target Name="ContentsBeforeBuild" AfterTargets="BeforeBuild">
<ItemGroup>
<Content Include="images\**" />
</ItemGroup>
</Target>
Phương <Target>
pháp không tiếp cận sẽ hướng dẫn Visual Studio hiển thị các tệp trong Trình khám phá giải pháp. Hạn chế của điều này là bất kỳ thao tác nào đối với các thư mục tự động sẽ khiến Visual Studio ghi đè mục nhập ký tự đại diện. Cũng cần lưu ý rằng cách tiếp cận dưới đây sẽ chỉ cập nhật Trình khám phá Giải pháp khi mở Giải pháp / Dự án trong VS. Ngay cả nút thanh công cụ "refresh" của Solution Explorer cũng không làm được.
<ItemGroup>
<Content Include="images\**" />
</ItemGroup>