2012-02-09 27 views
5

Tôi có tệp .cs đầy đủ mã C# mà tôi tiếp tục sử dụng lại trong nhiều dự án.Tham chiếu đến mã C# từ nhiều dự án

Hiện tại tôi đang đưa nó vào các dự án này bằng cách sao chép và dán mã vào một tệp mới trong mỗi thư mục dự án. Đây là sai cách để làm điều đó.

Điều gì là phải cách để làm điều đó?

Cách đúng nên:

  • giữ mã phổ biến ở một nơi duy nhất trên máy tính của tôi
  • và giữ liên kết tươi --- vì vậy khi thay đổi mã thông thường, mỗi dự án là nhận thức của nó , lần sau tôi biên dịch lại dự án đó.

Đoán ngẫu nhiên, tôi mong đợi một số loại chỉ thị như using mycode = C:\common\mycode.cs, nhưng tôi chắc chắn đó không phải là cách thực hiện .NET.

(Tôi đang sử dụng C# 2010, .NET 4.0, và chỉ biên dịch mã này cục bộ trên một máy tính.)

Trả lời

6

Tạo Thư viện lớp, thêm tệp, tạo dự án và tham chiếu DLL được tạo từ bản dựng. Thêm câu lệnh sử dụng vào mỗi tệp sẽ tham chiếu nó. Ngoài ra nếu nó lỗi và DLL là trong dự án bạn và Nhấp chuột phải vào đối tượng -> Giải quyết và nó sẽ thêm việc sử dụng cho bạn.

+0

Tôi đã làm tất cả điều đó, nhưng giờ đây tôi dường như không thể sử dụng các chức năng từ trong Thư viện lớp học. Tôi có cần chỉ thị 'sử dụng' nào đó không? – Joe

+0

@Joe Có, bạn cần phải thêm tham chiếu vào dự án và sau đó thêm việc sử dụng trong mỗi tệp tham chiếu đến một lớp trong thư viện. Vì vậy, ở trên cùng bằng cách sử dụng [Không gian tên]. Ngoài ra Visual Studio có thể giải quyết nó bằng cách nhấn chuột phải nếu DLL nằm trong Project. –

+0

Và tôi cũng cần phải thực hiện các lớp học trong công chúng .dll ... * facepalm * – Joe

8

Đặt mã vào một dự án thư viện lớp riêng biệt và tham chiếu trong các dự án khác của bạn.

6

Hoặc,

Right-Click vào dự án trong solution explorer Chọn Add Existing mục Browse để file .cs trong một dự án khác, và một cú nhấn chuột để chọn Nhấp vào nút mũi tên xuống bên phải của Thêm và chọn Thêm dưới dạng Liên kết

Bây giờ bạn có một tệp nguồn được tham chiếu bởi hai dự án nhưng nó có không gian tên bạn đã cung cấp trong dự án đầu tiên có thể không lý tưởng.

Cách tốt nhất để tổ chức như hai câu trả lời khác đã đề xuất, đặt mã phổ biến trong thư viện lớp để nó có không gian tên của MyClassLibrary thay vì SomeOtherProject. Nó tiết kiệm một dll lớn hơn được sao chép mà không quan trọng nhiều cho đến khi bạn đến để phát triển cho một cái gì đó nhỏ như Windows Phone. Hoặc thay đổi không gian tên của mã thông thường thành Me.Common trong tất cả các ứng dụng của bạn - nó thực sự không quan trọng cái nào là bản gốc, bạn có thể chỉnh sửa nó từ bất kỳ dự án nào tham khảo nó.

Kiểm tra xem Kiểm soát nguồn không phải là vấn đề hay không.

+0

Không có ý tưởng "Thêm dưới dạng Liên kết" tồn tại, cảm ơn! Hữu ích cho các dự án thử nghiệm nhỏ, nơi tôi không thể quan tâm đến việc sắp xếp đúng 10 dòng mã của mình thành một dự án thư viện lớp riêng biệt. – Dan

0

Tôi đã viết một ứng dụng tự động thêm mã làm liên kết, tiện dụng cho các dự án sử dụng lại nhiều mã và thay đổi một chút. Đó là tại https://github.com/CADbloke/CodeLinker

hoặc

Đừng sợ để chỉnh sửa XML csproj tập tin. Ví dụ, công trình này ...

<Compile Include="$(Codez)\z.Libraries\diff-match-patch\DiffMatchPatch\**\*.cs" 
Exclude="NotThisOne.cs;**\NotThisFolderWith\This*.cs"> 
<Link>Libs\%(RecursiveDir)%(Filename)%(Extension)</Link> 
</Compile> 

... và sẽ cung cấp cho bạn tất cả các tệp C# từ thư mục nguồn và thư mục con, dưới dạng tệp được liên kết trong dự án đích của bạn.

  • $(Codez) là môi trường Windows tôi sử dụng trên máy tính của mình.
  • Tôi cũng có thể đã sử dụng *.* ở cuối thay vì *.cs.
  • Đây là một trong những điều mà Visual Studio có thể gây ra cho bạn, việc thêm tệp vào thư mục chứa đầy đủ các tệp được liên kết với ký tự đại diện có thể phân tách chúng ra thành các mục riêng biệt. Hay không. Phụ thuộc vào gió.
Các vấn đề liên quan