2008-09-24 7 views
8

Tôi đang gọi dll không phải là .NET từ dự án của mình bằng P/Invoke, nghĩa là .dll phải luôn có mặt trong thư mục .exe.Chỉ định phụ thuộc non-.NET trong Visual Studio

Có cách nào để nói với Visual Studio về sự phụ thuộc này, sao cho nó sẽ tự động sao chép .dll vào thư mục đầu ra khi biên dịch và sẽ tự động bao gồm .dll trong thiết lập? Hay tôi phải làm điều này bằng tay?

Trả lời

5

Bạn có thể sao chép/liên kết (các) tệp này vào dự án và trong cửa sổ thuộc tính thiết lập "Build Action" thành "None" và "Copy to Output Directory" thành "Copy if newer" hoặc "Copy always".

Hoặc bạn có thể sử dụng "Sự kiện trước khi tạo dựng" & "Sự kiện sau khi tạo dựng", nơi bạn có thể chỉ định bất kỳ tập lệnh lô nào.

Tôi đặt trước tùy chọn thứ hai, bởi vì cách này linh hoạt hơn lần đầu tiên.

Bạn cũng có thể sửa đổi tệp MSBuild và thêm nhiệm vụ để sao chép (các) tệp.

+0

Cảm ơn, tùy chọn đầu tiên là những gì tôi đã làm - tự hỏi nếu có một cách tốt hơn – Grokys

8

Bạn chỉ cần thêm .DLL vào dự án của mình.

Chọn ngăn Properties cho tệp đó và đặt Build Action thành ContentCopy to Output Directory đến Copy if newer.

+0

Tác vụ xây dựng = "Nội dung" tốt hơn là Xây dựng hành động = "Không" được đề xuất trong phản hồi khác. Điều này là do bạn có thể dễ dàng bao gồm các tệp "Nội dung" trong một dự án Thiết lập. – Joe

+0

Vâng, và đó chính là lý do tại sao tôi gợi ý rằng trong phản hồi của tôi. –

+0

> đó là lý do tại sao tôi đề nghị rằng trong phản ứng của tôi Và tại sao tôi upvoted câu trả lời của bạn :) – Joe

2

Tôi nghĩ rằng một vấn đề với việc thêm một .DLL vào dự án là bạn có thể cần các phiên bản khác nhau của một DLL để gỡ lỗi và phát hành bản dựng. Bạn nghĩ rằng bạn có thể thêm cả hai phiên bản gỡ lỗi và phát hành của tệp DLL vào tệp và dựa trên cấu hình, loại trừ các tệp không phù hợp, nhưng tôi không thể tìm ra cách để làm điều đó. Tôi đang sử dụng Visual Studio 2010. Tôi tích cực điều này làm việc trong những ngày cũ với VS6.

+0

Bạn có thể chỉnh sửa thủ công tệp .csproj để thêm Điều kiện vào nút nội dung của DLL: Ngoài ra, bạn có thể sử dụng bước dựng sẵn để sao chép MyDLL. Debug.dll hoặc MyDLL.Release.dll để MyDLL.dll tùy thuộc vào cấu hình hiện tại. (Tôi nghĩ bạn có thể thực hiện điều này thông qua trang thuộc tính Project trong VS, bằng cách chuyển từ Debug sang Release) – bruceboughton

+0

Đã trả lời ở đây http://stackoverflow.com/a/33436918/1889784 –