Cách tốt nhất để xử lý các tham chiếu trong ứng dụng .NET là gì


9

Gần đây tại nơi làm việc, chúng tôi gặp phải một vấn đề trong đó chúng tôi đã gắn thẻ / phân nhánh một dự án và có một số vấn đề biên dịch do các tham chiếu dll / dự án đang trỏ đến cấu trúc thư mục cũ.

Chúng tôi đã tạo một thư mục 'thùng bên ngoài' cho mỗi dự án và sao chép các dll được tham chiếu vào các thư mục này. Đây có phải là cách tốt nhất hay có một tiêu chuẩn công nghiệp cụ thể để xử lý việc này?

Câu trả lời:


21

Tôi muốn nói rằng nuget là cách tốt nhất để xử lý các phụ thuộc.

nuget có thể quản lý các phiên bản VÀ tự động tải xuống các phụ thuộc từ máy chủ nuget cục bộ của bạn .

Thật dễ dàng để tạo / cấu hình một máy chủ cục bộ. Đơn giản chỉ cần tạo một dự án ASP.NET trống mới và cài đặt nuget-servergói nuget (sử dụng nuget;).

Điều đó cũng có nghĩa là bạn sẽ không phải kiểm tra tất cả các phụ thuộc và / hoặc quản lý các phiên bản của chúng bằng TFS.


1
Tôi thấy rằng hầu hết các công ty không sử dụng tốt điều này. Trên thực tế, tôi vẫn chưa thấy một máy chủ xây dựng được cấu hình đúng để đạt được những lợi ích của việc này, vì vậy +1 cho một cái gì đó tôi muốn thấy ở mọi nơi.
deltree

Tôi dự định đặt câu hỏi nếu nuget không thể được viết kịch bản (hoặc một cái gì đó) để giữ cho các gói không bị đảo ngược và tự động tải xuống các phụ thuộc. Và kết quả tìm kiếm đầu tiên cho tôi biết rằng nuget hỗ trợ điều này ngay lập tức! Cảm ơn!
Mormegil

5

Nó không thực sự - Microsoft cho biết cách tốt nhất để xử lý các tài liệu tham khảo là xây dựng dự án của bạn theo một giải pháp lớn. Vâng, tôi biết, họ thực sự có nghĩa là nó quá.

Các nhóm thực hành và mô hình đã đưa các thực tiễn tốt nhất của họ cùng với TFS, nhưng nó áp dụng cho các bản dựng chung. Có 3 loại thiết lập giải pháp, đó là "1 giải pháp lớn", một cách tiếp cận được phân vùng giống như cách mà hầu hết mọi người sử dụng để quản lý các bản dựng bằng cách xây dựng lần lượt và sao chép các tạo phẩm vào một thư mục chung (mà si không hỗ trợ bởi .NET không có đường dẫn 'bao gồm' hoặc 'thư viện' trên toàn máy chủ) và thiết lập Nhiều giải pháp, đây là phiên bản phức tạp hơn của phân vùng.

Họ nói

In general you should:

    Use a single solution strategy unless the resulting solution is too large to load into Visual Studio.
    Use multiple solutions to create specific views on sub-systems of your application.
    Use multiple solutions to reduce the time it takes to load a solution and to reduce build time for developers.

Đối với TFS, họ khuyên bạn nên phân nhánh bất kỳ dự án bên ngoài nào trong dự án của bạn, thay vì dựa vào ánh xạ không gian làm việc gần giống với các phần bên ngoài của lật đổ. Cá nhân, tôi nghĩ rằng lời khuyên của họ không phải là cách thực hành tốt nhất, nhưng tôi cho rằng họ đang cố gắng giảm thiểu bất kỳ vấn đề xây dựng nào bạn sẽ gặp phải khi sử dụng tài liệu tham khảo.

Tôi đã gặp vấn đề với các bản dựng .NET cố gắng tắt hệ thống bằng cách chỉ xây dựng những gì cần thiết, một bản dựng hàng đêm làm mọi thứ và sao chép mọi bản lắp ráp mới vào một thư mục là cách tốt nhất để mọi người giữ đồng bộ - đặc biệt là những người kiểm tra. Lưu ý rằng điều này thực sự chỉ áp dụng cho các ứng dụng .NET, các ứng dụng C ++ có xu hướng vẫn hoạt động vì chúng không có các phiên bản lắp ráp hoặc các khía cạnh tương tự có thể gây ra sự cố với các thành phần gọi điện. Cách tiếp cận này hoạt động tốt, nhưng bạn không thể luôn cho rằng các bản dựng một phần là ổn, vaping toàn bộ và xây dựng lại là an toàn nhất.


Điều này có ý nghĩa, một giải pháp chứa nhiều dự án (API DLL, dự án ứng dụng của bạn).
Snoop

1

Điều này phụ thuộc vào cách giải pháp của bạn được cấu trúc và khả năng của phần mềm kiểm soát phiên bản của bạn. Trước đây, chúng tôi thường giữ một dự án chưa được xây dựng / bỏ qua trong các giải pháp của chúng tôi chứa tài liệu và một thư mục dành riêng cho bất kỳ thư viện tham chiếu của bên thứ ba nào. Vì nó là một phần của giải pháp, đường dẫn đến các tệp này có thể được tham chiếu bằng đường dẫn tương đối. Sau khi chúng tôi chuyển sang TFS 2010, đã thoát khỏi dự án này và chỉ cần thêm một thư mục "Hỗ trợ" trong thư mục của giải pháp đó trong dự án nhóm song song với các nhánh chính của chúng tôi. Trong cả hai trường hợp, phiên bản kiểm soát nguồn của thư viện kết thúc ở cùng một vị trí tương đối bất kể các nhà phát triển đã cấu hình máy của họ như thế nào.


0

Khi sử dụng lật đổ để kiểm soát phiên bản, bạn có thể sử dụng thuộc tính "bên ngoài" cho mục đích này. Điều này cho phép bạn giữ một bản sao cục bộ của một DLL được chia sẻ trong một đường dẫn tương đối gần dự án hiện tại của bạn. Điều đó giúp dễ dàng tham chiếu DLL theo đường dẫn tệp tương đối không thay đổi, ngay cả khi bạn thay đổi thư mục chính của dự án của bạn sang một thư mục khác. Externals cho phép bạn cũng xác định phiên bản cụ thể hoặc sửa đổi để bao gồm.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.