2010-04-07 25 views
16

Tôi mới vào studio trực quan, đến từ Delphi.Visual Studio: Thêm mục/Thêm làm liên kết thay vì chỉ Thêm

Tôi có một cây thư mục chứa đầy tệp .cs (gốc là \ Chung).
Tôi cũng có một cây thư mục đầy đủ các ứng dụng (root là \ Applications)
Cuối cùng, tôi đã có một cây đầy Assemblies (root là \ Assemblies)

Tôi muốn giữ file .cs của tôi trong cây chung và tất cả các voodoo môi trường (giải pháp, dự án, cài đặt, siêu dữ liệu, dữ liệu gỡ lỗi, thùng, vv) trong cây Assmblies. Vì vậy, cho một ví dụ đơn giản, tôi đã có một hội đồng gọi là PdMagic.Common.Math.dll. Giải pháp và dự án nằm trong \ Assemblies \ Common \ Math. Tất cả các tệp nguồn (.cs) của nó đều nằm trong \ Common \ Math. (matrix.cs, trig.cs, mathtypes.cs, mathfuncs.cs, stats.cs, v.v.)

Khi tôi sử dụng Thêm mục hiện có để thêm ma trận.cs vào dự án của tôi, một bản sao của nó là được thêm vào thư mục \ Assemblies \ Common \ Math. Tôi chỉ muốn tham khảo nó. Tôi không muốn nhiều bản sao nằm xung quanh. Tôi đã thử thêm mục hiện có, và sử dụng thả xuống để "Thêm liên kết" thay vì chỉ "Thêm", và điều đó dường như làm những gì tôi muốn.

Câu hỏi: "Phương pháp hay nhất" cho loại điều này là gì? Hầu hết mọi người chỉ đặt những tệp .cs đó vào cùng thư mục với dự án? Tại sao không phải là "Thêm liên kết" mặc định?

Cảm ơn!

+0

Để trả lời câu hỏi khác của bạn, nhóm Prism đã thực hiện rất nhiều công việc để thực hiện công việc này. Hãy xem bài đăng này: http://msdn.microsoft.com/en-us/magazine/ee321573.aspx – NerdFury

+0

Prism "project linker" là hoàn hảo. Chính xác những gì tôi đã có trong tâm trí. Bây giờ tôi phải tìm ra nếu tôi có thể sử dụng nó. Cảm ơn bạn. –

Trả lời

11

Cách "thực hành tốt nhất" trong trường hợp này là không chống lại công cụ. Nó cho phép bạn làm những gì bạn muốn, nhưng bạn sẽ nhận được nhiều công việc hơn và có thể tập trung vào mã nếu bạn chỉ để cho IDE tổ chức dự án của bạn cho bạn.

Tôi sẽ tạo một dự án giải pháp trống có tên là PdMagic.Common

này sẽ cung cấp cho bạn một cấu trúc tập tin như

PdMagic.Common\ 
PdMagic.Common\PdMagic.Common.sln 

sau đó tôi thường thêm một thư mục src và libs (thông qua hệ thống tập tin, không VS)

bên trong thư mục libs, tôi sẽ đặt tất cả các phụ thuộc của bên thứ ba của tôi và thư mục src sẽ giữ tất cả các dự án của tôi

PdMagic.Common\ 
PdMagic.Common\PdMagic.Common.sln 
PdMagic.Common\libs 
PdMagic.Common\libs\nunit 
PdMagic.Common\src 

Tiếp theo, trong Visual Studio, tôi nhấp chuột phải vào Giải pháp mà tôi vừa tạo và nhấp " Add -> New Project", tôi sẽ xác định rằng tôi muốn nó được tạo ra trong thư mục \ src và gọi nó là PdMagic.Common.Math

Bây giờ cấu trúc thư mục của tôi sẽ giống như thế này

PdMagic.Common\ 
PdMagic.Common\PdMagic.Common.sln 
PdMagic.Common\libs 
PdMagic.Common\libs\nunit 
PdMagic.Common\src 
PdMagic.Common\src\PdMagic.Common.Math 
PdMagic.Common\src\PdMagic.Common.Math\PdMagic.Common.Math.csproj 
PdMagic.Common\src\PdMagic.Common.Math\Class1.cs 

Sau đó, khi bạn thêm các lớp vào dự án PdMagic.Common.Math của bạn, chúng sẽ đi vào thư mục với tệp dự án. Đây là cách IDE có ý kiến ​​chúng ta nên làm việc, và tôi nghĩ hầu hết các nhà phát triển đi với nó bởi vì cố gắng để có được bất kỳ cách bố trí khác trên hệ thống tập tin sẽ đòi hỏi quá nhiều chiến đấu với IDE. Tôi biết nó có thể khó đến từ một hội nghị khác, và bạn theo bản năng muốn có những quy ước tương tự trong môi trường mới. Tuy nhiên, nếu bạn gắn bó với các quy ước, (đúng hay sai theo ý kiến ​​của bạn) bạn sẽ làm được nhiều hơn bởi vì bạn sẽ không cố gắng ép buộc IDE làm những việc theo cách bạn nghĩ họ nên làm.

+0

Đó chính là loại câu trả lời tôi đang tìm kiếm. Trong khi bạn đang viết nó, tôi đã làm một số thử nghiệm bản thân mình và đã đưa ra một trường hợp (phổ biến) mà tôi không chắc chắn nó có thể xử lý. Tôi đang nhắm mục tiêu cả Silverlight và WPF. Hầu hết các nguồn (.cs) là giống nhau, nhưng các assembly khác nhau phải được xây dựng cho mỗi. Vì vậy, tôi cần phải có PdMagic.Common.Math cho SL và PdMagic.Common.Math cho WPF. Tôi nghĩ rằng điều này đòi hỏi hai dự án mà cả hai đều sử dụng cùng Class1.cs. Tôi có thể làm phiền bạn để tiến thêm một bước nữa không? Cảm ơn bạn lần nữa vì câu trả lời của bạn. –

1

Tôi nghĩ rằng 'thực hành tốt nhất' là có những thói quen 'phổ biến' đó vào một hội đồng mà bạn có thể tham khảo thay vì kéo các tệp nguồn vào một loạt các dự án khác nhau. Bạn có thể thêm nó như là một hội đồng được xây dựng sẵn với "Thêm tham chiếu ..." hoặc bằng cách bao gồm một dự án cho hội đồng đó và thêm một tham chiếu đến dự án (cũng được thực hiện trong hộp thoại "Thêm tham chiếu ...").

Đây là một trong những điều có vẻ như một chút công việc để thiết lập ban đầu (và có thể), nhưng nó thường trả hết trong thời gian dài.

+0

@MichaelBurr: bạn đánh tôi với nó! Bàn phím nhanh hơn, tôi đoán vậy. – Cyberherbalist

+0

Tôi nghĩ anh ấy muốn tổ chức dự án và các tập tin của mình khác với VS nghĩ rằng anh ấy nên, và vì vậy anh ấy đang chiến đấu với IDE để làm mọi thứ họ muốn, thay vì cách MS nói anh ta muốn. Tôi không nghĩ rằng anh ta đang cố gắng sử dụng lại mã đã có sẵn trong một hội đồng khác nhau. – NerdFury

+0

@NerdFury: Tôi hiểu rằng các tệp .cs hiện không có trong một hội đồng; tuy nhiên, tôi nghĩ rằng nên đóng gói chúng trong một hội đồng (hoặc một số) để sử dụng bởi nhiều dự án.Điều đó cũng có thể bị ép buộc vào cách làm việc của IDE, nhưng tôi nghĩ đó là câu trả lời cho câu hỏi đặt ra. –

1

Nếu bạn muốn "tham chiếu" ma trận.cs trong dự án của bạn, không sử dụng Thêm mục hiện có, tạo tham chiếu ("Thêm tham chiếu") vào thư viện lớp hoặc đối tượng matrix.cs là một phần của. Nếu bạn không muốn (hoặc không thể sử dụng) thư viện hoặc đối tượng mà matrix.cs là một phần của, thì Add Link là cách bạn sẽ làm với nó, nhưng nghiêm túc tôi chưa bao giờ sử dụng tính năng cụ thể đó.

Không có nhà phát triển nào tôi từng làm việc trong .NET. Cô lập tệp .cs của họ trong các thư mục riêng biệt. Loại duy nhất của sự phân biệt như vậy mà tôi đã xem như là một thực tế là trong MVC, nơi mà các mô hình, quan điểm và bộ điều khiển nằm trong thư mục riêng của họ.

+0

Cảm ơn vì điều đó. Đó là ý định của tôi rằng matrix.cs và mã .cs khác được đặt trong thư viện PdMagic.Common.Math để nó có thể được tham chiếu bởi các dự án khác. Nếu bạn không nhớ, hãy xem nhận xét của tôi về bài đăng gốc của tôi. Làm thế nào để các nhà cung cấp công cụ xử lý các trường hợp .cs chung cho mã SL và WPF? Chúng thường có thể giống hệt nhau .cs, nhưng yêu cầu các assembly khác nhau được xây dựng cho mỗi. –

1

Bởi vì bạn muốn tham khảo matrix.cs trong dự án, không chỉ cần sử dụng AddExistigItem, tạo một referene mới cho lớp đó.

66

Bạn chỉ có thể sử dụng Thêm Như liên kết bằng cách nhấp vào mũi tên nhỏ xuống ở bên phải của nút add từ Add -> Hiện có hàng lệnh ...

(Thanks Peter)

Trong khi Tôi nhận ra đây không phải là câu trả lời cho câu hỏi ban đầu (liên quan đến các phương pháp hay nhất), tôi trình bày câu trả lời này để tiết kiệm thời gian cho những người khác được chỉ dẫn ở đây bởi tiêu đề gây hiểu lầm của câu hỏi này.

+2

Câu trả lời hay nhất cho đến nay, vì vậy đây là đại diện +10 của bạn! –

+5

Không phải là câu trả lời hay nhất cho câu hỏi ở trên, mà là câu trả lời cho những gì tôi đang tìm kiếm! –

+0

Tôi đã làm việc trong Visual Studio từ trước khi nó có số phiên bản và tôi chưa bao giờ nhận thấy tính năng này! Cảm ơn! (lưu ý phụ @GrantWinney, tôi xác nhận lý thuyết của bạn, câu hỏi này được xếp hạng cao về "cách thêm tệp dưới dạng liên kết" và đó là cách tôi có ở đây.) –

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