2012-10-23 30 views
5

Tôi có một dự án MVC 4 trong Visual Studio 2012. Có thư mục Logs trong nó chỉ chứa bốn thư mục con trống. Cấu trúc này là cần thiết bởi một thư viện tôi sử dụng. Tôi bao gồm các thư mục này để dự án như thế này:Làm cách nào để buộc MSBuild sao chép các thư mục trống trong dự án?

<ItemGroup> 
    <Folder Include="App_Data\" /> 
    <Folder Include="XSockets\XSocketServerPlugins\Log\XConnectionInterceptor\" /> 
    <Folder Include="XSockets\XSocketServerPlugins\Log\XErrorInterceptor\" /> 
    <Folder Include="XSockets\XSocketServerPlugins\Log\XHandshakeInterceptor\" /> 
    <Folder Include="XSockets\XSocketServerPlugins\Log\XMessageInterceptor\" /> 
</ItemGroup> 

Nhưng điều này là không đủ và tất cả các thư mục (bao gồm cả App_Data đó có từ tạo ra các dự án bằng Visual Studio) không được sao chép vào gói. Tôi có thể bằng cách nào đó buộc MSBuild phải sao chép chúng ngay cả khi chúng trống không?

+1

Bạn có thể đặt một tệp trống giả trong mỗi thư mục. Có lẽ không phải là "thuần khiết", nhưng nó sẽ hoạt động và nhanh chóng thực hiện. –

+0

Tôi nghĩ về điều này, nhưng tôi hy vọng có một số giải pháp tốt hơn và sạch sẽ. – Episodex

+0

Bây giờ tôi biết rằng tôi đã đặt câu hỏi sai. Mặc dù các câu trả lời bên dưới hoạt động để xây dựng, chúng không hoạt động đối với tôi, bởi vì tôi đang sử dụng WebDeploy và các thư mục không được sao chép vào gói. Cách duy nhất (được đề xuất bởi MS) là đặt các tệp giả như @Damien_The_Unbeliever đã viết. – Episodex

Trả lời

4

Thêm bước PostBuild để sao chép các thư mục.

tôi không thể trả lời riêng cho VS2012, nhưng đây là cách bạn làm điều này trong VS2010:

  • Nhấp chuột phải vào dự án và chọn Properties
  • hiển thị tab Build Sự kiện
  • Đặt của bạn sao chép các lệnh trong các lệnh sự kiện sau khi xây dựng

Nếu bạn nhấp vào nút chỉnh sửa, liệt kê tất cả các biến VS có sẵn mà bạn có thể sử dụng để avo id sử dụng đường dẫn rõ ràng vv

Trong VS2010, mà sửa đổi hồ sơ dự án để tìm kiếm một cái gì đó như thế này:


    <PropertyGroup> 
    <PostBuildEvent>copy /Y "$(TargetDir)\*.*" "$(ProjectDir)\..\..\..\net40"</PostBuildEvent> 
    </PropertyGroup> 
+0

Tôi đang sử dụng dự án VS thông thường, không phải tập lệnh MSBuild. Tôi có nên chỉnh sửa tệp dự án để thêm tệp này không? Bạn có thể cung cấp một ví dụ về làm điều này trong tập tin dự án? Tôi mới xây dựng kịch bản. – Episodex

3

Không được chỉnh sửa hồ sơ dự án. Tôi có thể thấy rằng bạn đang sử dụng phiên bản cũ hơn trên XSockets, phải không?

Làm như Brenda nói và không quan tâm đến tệp dự án. Nhìn vào hình ảnh đính kèm ... build events

Không chắc chắn 100% rằng nó là thế này mà bạn đang tìm kiếm, nhưng ... nó cho thấy cả trước và sau đại học xây dựng các sự kiện

Trân Uffe , Team XSockets

+0

Cảm ơn! Điều đó sẽ hoạt động, tôi sẽ kiểm tra vào thứ hai. Tại sao bạn nghĩ rằng tôi đang sử dụng phiên bản cũ? Tôi đã cài đặt XSockets 2 vào ứng dụng MVC 4 của tôi bằng cách sử dụng nuGet. Có lẽ tôi đã làm gì sai? – Episodex

+0

Ồ, vậy thì mọi thứ đều ổn! Của tôi xấu :) Nghĩ rằng bạn đã có một số công cụ cấu hình (mà chúng tôi sử dụng để có trong một phiên bản trước đó). Chỉ cần ping cho tôi/chúng tôi nếu bạn có bất kỳ vấn đề nào và chúng tôi sẽ giúp bạn tốt nhất có thể! – Uffe

+0

Có lẽ tôi sẽ liên hệ với bạn một số câu hỏi sớm, khi tôi tổ chức chúng và suy nghĩ lại tốt :). Cảm ơn bạn đã làm việc tuyệt vời trên XSockets! Đối với câu hỏi tôi đã thêm bình luận tại sao các giải pháp này không làm việc cho tôi, nhưng chúng là đúng cho câu hỏi tôi hỏi. – Episodex

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