Quản lý các gói NuGet nội bộ với quyền truy cập mã nguồn


20

Chúng tôi có rất nhiều thư viện nội bộ mà chúng tôi muốn chia sẻ giữa các dự án trong công ty. Đây là một số yêu cầu:

  • nguồn thư viện được lưu trữ trong kho lưu trữ tách biệt với các dự án cuối
  • dự án cuối bao gồm các thư viện thông qua NuGet
  • có thể dễ dàng kiểm tra mã nguồn cho bất kỳ sự tự do nào trong khi làm việc trên một dự án cuối

Thiết lập kho lưu trữ NuGet riêng của chúng tôi không phải là vấn đề, nhưng quản lý nguồn là. Chúng tôi đã cố gắng để lộ các nguồn thông qua máy chủ nguồn và nó kinda hoạt động, nhưng không hoàn toàn: VS tải các nguồn trong khi gỡ lỗi mã bên ngoài, nhưng không phải khi bạn cố gắng để di chuyển đến định nghĩa / thực hiện. Về cơ bản, bạn chỉ có thể đi đến mã nguồn khi gỡ lỗi, đây không phải là thứ chúng ta cần.

Vì vậy, các câu hỏi là:

  • Những cách tồn tại để cung cấp quyền truy cập vào mã nguồn của các thư viện nội bộ mà không cần phải có mã trong cùng một repo / giải pháp
  • Có cách nào để thiết lập tổ hợp nguồn cấp biểu tượng máy chủ / NuGet để VS sử dụng các biểu tượng để điều hướng, không chỉ để gỡ lỗi không?

Sử dụng ReSharper / bổ trợ khác là một tùy chọn.


2
Chúng tôi thấy việc sử dụng Nuget để quản lý các dự án nội bộ không tối ưu; cuối cùng chúng tôi đã loại nó ra để ủng hộ các tài liệu tham khảo dự án và DLL. Tôi muốn nghe từ một người có thể làm cho công việc này.
Robert Harvey

Bạn cũng đã thiết lập một máy chủ ký hiệu cho các tệp pdb tương ứng với các dll được chứa trong các gói NuGet của bạn chưa?
RubberDuck

3
Chúng tôi có cùng một thiết lập tại nơi làm việc hiện tại của tôi. Máy chủ NuGet (chứa DLL không có PDB) cộng với máy chủ ký hiệu (chứa DLL, PDB và nguồn). Chúng tôi cũng có cùng một vấn đề (nguồn và PDB chỉ được truy xuất khi gỡ lỗi). @RobertHarvey: Trình quản lý gói NuGet là một khách hàng NuGet kém. Nó không phân biệt giữa các phụ thuộc trực tiếp và nhất thời và đòi hỏi các hành động "hợp nhất" ngớ ngẩn. Chúng tôi chuyển sang Paket và không bao giờ nhìn lại kể từ đó. Nó làm cho quản lý gói lành mạnh và chịu đựng được, giáp với dễ chịu.
Allon Guralnek

2
Tôi phải hỏi - mặc dù tôi không nghĩ rằng đây là một yêu cầu không hợp lý - tại sao bạn cần phải có thể tìm trong các gói chung / chung? Về mặt tình cảm, ít nhất đây phải là những hộp đen được ghi lại và sự cần thiết phải nhìn vào bên trong chứ không phải là ngoại lệ. Trong mọi trường hợp, chúng có sẵn trong repo nguồn của bạn và do đó nó có thể chấp nhận được tầm thường để tải xuống giải pháp để kiểm tra. Tôi có thể thấy bất kỳ lý do tại sao điều này hoặc một phần của điều này có thể không hoàn toàn là trường hợp, nhưng nó vẫn đáng để hỏi.
Murph

4
@Murph - Tôi không phải là OP, nhưng trong tài liệu kinh nghiệm của tôi không bao giờ nắm bắt được chi tiết tôi muốn. Tôi có cần phải làm sạch trạng thái này hay sẽ bình tĩnh? Chính xác thì cái này là gì? Làm thế nào để những quá tải khác nhau? Các thực thể này có hỗ trợ bình đẳng không, và nếu vậy, dựa trên những gì? Sự phức tạp gần đúng của cuộc gọi này là gì? Các chỉ trình bày chi tiết giá trị tài liệu có là (sạch) nguồn, vì luôn có và thường sẽ là những điều Documenter không bao giờ coi nhưng điều đó quan trọng với bạn. Tệ hơn, tài liệu phức tạp chắc chắn có lỗi và phát triển cũ.
Eamon Nerbonne

Câu trả lời:


1

Điều nên làm chỉ đơn giản là kiểm tra mã nguồn cho gói NuGet và mở giải pháp trong một phiên bản riêng của Visual Studio.

Visual Studio có một mẹo nhỏ để chuyển đổi giữa các mã trong các trường hợp mở bằng cách tìm ra những gì bạn đã tham chiếu. Lần đầu tiên điều này xảy ra với tôi trong khi tôi đang gỡ lỗi, là một sự mặc khải.

Vấn đề chính mà bạn gặp phải là đảm bảo mã đã kiểm tra cho gói phụ thuộc thể hiện cùng một phiên bản với tham chiếu NuGet của bạn trong dự án chính. Không thành vấn đề nếu bạn tuân theo chính sách luôn xây dựng so với phiên bản mới nhất của gói hàng của bạn.

Một lợi ích khác của phương pháp này là nếu gói cần thay đổi, bạn có thể thực hiện thay đổi ở đó và sau đó.


2
Bạn có thể cung cấp một số chi tiết bổ sung về cách làm cho nó hoạt động không? Nó không hoạt động theo cách bạn mô tả cho tôi. Bạn có cần bao gồm các PDB trong gói không? Bất kỳ thủ đoạn bổ sung?
Dyppl

-1

Có lẽ bạn có thể sử dụng https://github.com/GitTools/GitLink . Nó thêm một liên kết trong tệp pdb trỏ đến kho lưu trữ để Visual Studio sẽ tìm nạp mã nguồn từ đó - và sau đó bạn chỉ cần đưa tệp pdb vào gói nuspec của mình và sẽ không cần máy chủ nguồn.


1
Nó hoạt động bên ngoài gỡ lỗi mặc dù? Nó không giống như nó làm.
Dyppl

-1

Vì vậy, nó không phải là một giải pháp hoàn hảo, nhưng bạn đề cập rằng bạn có thể tùy ý sử dụng Resharper; với dotPeek và chia sẻ lại, bạn có thể điều hướng đến việc tháo gỡ mã gốc, đó là những gì tôi sử dụng tại nơi làm việc, nơi chúng tôi có một thiết lập tương tự với mã của bạn.

Tôi tìm thấy sự kết hợp của Máy chủ Biểu tượng mà bạn đã đề cập và duyệt phần tháo gỡ thường đủ để tìm hiểu điều gì đang xảy ra.

Mong rằng sẽ giúp.

Chỉnh sửa: Sau khi đọc lại câu hỏi của bạn, tôi nhận ra rằng bạn đặc biệt yêu cầu có thể duyệt mã nguồn, điều này không phải. Tuy nhiên, hy vọng nó sẽ hữu ích cho ai đó.

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.