Tôi đã gặp lại vấn đề tương tự hôm nay.
Trước hết, nhờ Jon Cage và bài viết được liên kết trong bài viết của mình về chủ đề này, see above (or below). +1 !!! Nó giải quyết vấn đề của tôi.
Nhưng vì tôi ghét những thứ như toggle them as appropriate for your case
, có nghĩa là không có gì trừ trial and error
, tôi đã thực hiện một số thử nghiệm vì tôi có 2 giải pháp với số lượng dự án C++/CLI tốt.
Dưới đây là lời khuyên của tôi và giải thích cho nó:
Đối với tất cả 'tự tạo' hội (mà có "sao chép địa phương thiết lập là true):
"Properties chung" -> "Framework và Tham khảo "->" Tham khảo "-> Chọn một tham chiếu.
Trên Thẻ thuộc tính bên phải -> "Xây dựng Properties" -> "Sử dụng Dependencies Trong xây dựng"
- (sao chép từ các liên kết MSDN bài viết diễn đàn của bài Jon Cage)
Đặt tham số này Use Dependencies In Build
thành "false" bằng cách bỏ chọn.
Nó hoạt động như 'chuyển tiếp tham chiếu', xem ví dụ bên dưới.
KỸ THUẬT BỐI CẢNH:
-> có nghĩa là 'tài liệu tham khảo'
phương pháp 1:
trong SwCore giải pháp của tôi:
A.1.1 network->tools
, A.1.2 network->basics
.
A.2.1 tools->basics
.
A.3.1 drives->basics
, A.3.2 drives->tools
, A.3.3 drives->network
A.4.1 ...
với "Sử dụng Dependencies Trong xây dựng" thiết lập là true, các A.1.2 tài liệu tham khảo có thể được bỏ qua, vì nó được bao gồm trong A.2.1.
tất cả các file được tạo ra trong swcore \ phát hành \
vấn đề ==:
trong dung dịch DDI:
B.1.1 DDI_hardware->DDI_job
, B.1.2 DDI_hardware->drives
B.2.1 DDI_job->basics
, B.2.2 DDI_job->tools
, B.2.3 DDI_job->job
DDI_job
được tạo trong DDI \ Release \ và với "U.D.InBuild" được đặt thành true, bao gồm basics
.
DDI_hardware
được tạo ... và với "U.D.InBuild" được đặt thành true, nó bao gồm DDI_job->basics
.
DDI_hardware cũng tham chiếu các khái niệm cơ bản từ SwCore \ Release \
== >> tham chiếu kép đến thông tin cơ bản và các thông tin cơ bản khác. VS thấy 2 tệp và không thể nhận ra rằng đó là nội dung giống nhau.
phương pháp 2:
A.1.1 network->tools
, A.1.2 network->basics
.
A.2.1 tools->basics
.
với "U.D.InBuild" được đặt thành FALSE, không thể bỏ qua tham chiếu A.1.2 vì nó không được chuyển tiếp từ A.2.1.
== hoạt động, vì không có lắp ráp nào sẽ chứa các phụ thuộc sâu hơn khác, do đó sẽ không có xung đột.
BTW: Điều này buộc bạn phải xác định tất cả các tham chiếu cần thiết cho từng dự án, do đó bạn cũng có tổng quan về những gì bạn đang sử dụng trong dự án của mình.
Thông tin cuối cùng: Tôi không thể chắc chắn, nếu giải thích của tôi là chính xác. Co le vậy. người khác có thể xác nhận.
Vâng điều này không làm việc ... Phải cũng làm cho "Sử dụng ..." tài sản sai cho tham chiếu * .dll .. Nhưng trong tình huống đó bạn không thể sử dụng * .dll ... Nó không phải là giải pháp elagant nhưng những gì tôi tìm thấy là tạo ra một dự án * .dll trống thêm tham chiếu đến * dll (trong tình hình của tôi thêm dll log4.net cho dự án giả). Sau đó nếu muốn sử dụng dll (log4.net) từ dự án khác thêm rằng dll dll dự án thay vì tham chiếu trực tiếp đến chia sẻ dll (log4.net) – NoviceAndNovice