Tôi có một dự án Visual Studio C++ dựa trên một tệp DLL bên ngoài. Làm thế nào tôi có thể làm cho Visual Studio sao chép tệp DLL này tự động vào thư mục đầu ra (gỡ lỗi/phát hành) khi tôi xây dựng dự án?Làm sao để Visual Studio sao chép tệp DLL vào thư mục đầu ra?
Trả lời
Sử dụng hành động hậu xây dựng trong dự án của bạn và thêm các lệnh để sao chép DLL vi phạm. Hành động hậu xây dựng được viết dưới dạng tập lệnh theo lô.
Thư mục đầu ra có thể được tham chiếu là $(OutDir)
. Thư mục dự án có sẵn dưới dạng $(ProjDir)
. Hãy thử sử dụng các đường dẫn tương đối nếu có, để bạn có thể sao chép hoặc di chuyển thư mục dự án của mình mà không vi phạm hành động sau khi xây dựng.
(Câu trả lời này chỉ áp dụng cho C# không C++, xin lỗi tôi không nhận định câu hỏi ban đầu)
Tôi đã có qua địa ngục DLL như thế này trước đây. Giải pháp cuối cùng của tôi là lưu trữ các DLL không được quản lý trong DLL được quản lý dưới dạng tài nguyên nhị phân và trích xuất chúng vào một thư mục tạm thời khi chương trình khởi chạy và xóa chúng khi nó được xử lý.
nên là một phần của cơ sở hạ tầng .NET hoặc pinvoke, vì nó hữu ích .... . Một khi bạn làm điều này, bạn không phải lo lắng về các sự kiện sau khi xây dựng.
UPDATE:
tôi gửi mã ở đây trong câu trả lời khác https://stackoverflow.com/a/11038376/364818
Tôi đồng ý, nó phải là một phần của khuôn khổ (để liên kết tĩnh dll, v.v.) - Đáng chú ý, lưu trữ dll như một tài nguyên và sau đó giải nén nó trong thời gian chạy có thể gây ra các vấn đề trong một số môi trường doanh nghiệp (đặc biệt là nếu chúng có phần mềm chống virus chủ động tương đối). – BrainSlugs83
Các chi tiết trong phần ý kiến ở trên đã không làm việc cho tôi (VS 2013) khi cố gắng sao chép các dll đầu ra từ một C++ Dự án thư mục giải phóng và gỡ lỗi của một dự án C# khác trong cùng một giải pháp.
Tôi phải thêm bản dựng sau đây (nhấp chuột phải vào dự án có đầu ra .dll) sau đó thuộc tính -> thuộc tính cấu hình -> sự kiện xây dựng -> sự kiện sau xây dựng -> dòng lệnh
bây giờ tôi bổ sung thêm hai dòng sau để sao chép các dll ra vào hai thư mục:
xcopy /y $(TargetPath) $(SolutionDir)aeiscontroller\bin\Release
xcopy /y $(TargetPath) $(SolutionDir)aeiscontroller\bin\Debug
$ (OutDir) hóa ra là một đường dẫn tương đối trong VS2013, vì vậy tôi đã phải kết hợp nó với $ (ProjectDir) để đạt được hiệu quả mong muốn:
xcopy /y /d "$(ProjectDir)External\*.dll" "$(ProjectDir)$(OutDir)"
BTW, bạn có thể dễ dàng gỡ lỗi các tập lệnh bằng cách thêm 'echo' ở đầu và quan sát văn bản mở rộng trong cửa sổ đầu ra xây dựng.
'$ (OutDir)' là đường dẫn tuyệt đối trong Bản cập nhật cộng đồng VS2013 của tôi 4 ... –
$ (TargetDir) có thể thay thế $ (ProjectDir) $ (OutDir) vì nó là sự kết hợp của cả hai. – person27
Trong trường hợp của tôi mà không có/d nó đã ném một lỗi truy cập bị từ chối. Nhưng/d theo tài liệu là cho ngày. Không chắc chắn kết nối là gì. –
- 1. visual studio sao chép dll refrences vào thư mục đầu ra
- 2. Sao chép vào thư mục đầu ra cho hình ảnh không hoạt động + Visual Studio 2010
- 3. Visual Studio C++ - "Sao chép vào thư mục đầu ra" thiếu
- 4. Có thể tự động đặt "Sao chép vào thư mục đầu ra" khi tạo tệp trong Visual Studio 2010 không?
- 5. "Sao chép vào thư mục đầu ra" trong VC++
- 6. Làm thế nào để sao chép các tệp DLL vào cùng thư mục với tệp thực thi bằng CMake?
- 7. Tệp Xml không sao chép để kiểm tra thư mục đầu ra
- 8. Không sao chép vào thư mục bin
- 9. QMake - cách sao chép tệp vào đầu ra
- 10. QTCreator sao chép tệp vào thư mục đầu ra với INSTALLS
- 11. Visual Studio - gửi các tệp "nội dung" tới thư mục đầu ra thay vì thư mục con?
- 12. cách sao chép tệp vào thư mục chia sẻ capistrano
- 13. sử dụng Visual Studio để sao chép tệp?
- 14. Phụ thuộc của tài liệu tham khảo không được sao chép vào thư mục đầu ra
- 15. Làm cách nào để đặt Ant để sao chép các tệp cụ thể vào đầu ra?
- 16. Làm cách nào để sao chép tệp vào thư mục khác bằng MSBuild?
- 17. VS2010 "Sao chép vào thư mục đầu ra" không hoạt động?
- 18. Sao chép danh sách tệp vào thư mục
- 19. Có cách nào tốt hơn để sao chép tệp gốc vào thư mục bin không?
- 20. Khi nào Eclipse sao chép tài nguyên vào thư mục đầu ra?
- 21. Thay đổi cài đặt mặc định "Sao chép sang thư mục đầu ra" cho các tệp văn bản
- 22. Làm cách nào để ghi vào cửa sổ đầu ra trong Visual Studio 2010 AddIn?
- 23. Tại sao "Sao chép nếu mới hơn" không sao chép tệp khi tệp được cập nhật?
- 24. applescript để sao chép các thư mục vào Xcode?
- 25. Buộc các tệp bên ngoài được sao chép vào thư mục bin khi xuất bản
- 26. cách tạo tệp dự án Visual Studio để sao chép tài liệu tham khảo gián tiếp?
- 27. Nội dung tối ưu 2: Sao chép tệp lưu/sao lưu vào thư mục khác
- 28. Sao chép tệp trong nhật thực sao chép tên tệp (Chuỗi) thay vì tệp vào clipboard
- 29. Maven: sao chép WAR vào thư mục webapp của Tomcat
- 30. gradle: sao chép chiến tranh vào thư mục tomcat
Cũng đáng để chỉ ra rằng anh ấy có thể đặt sự kiện sau xây dựng thông qua Project> Properties> Build Events> Post-Build Event. –
Hoạt động! :) cảm ơn bạn! – Mat
mẫu: http: //eyeung003.blogspot.com/2009/11/visual-studio-post-build-event-to-copy.html – AntonioR