2015-09-22 16 views
9

Chúng tôi đang phát triển một ứng dụng WPF tại nơi làm việc có nhiều phụ thuộc "phổ biến" (Unity, Prism, vv). Tất cả đều ổn khi thêm dự án mới và sau đó thiết lập phụ thuộc gói NuGet cho mỗi dự án nhưng khi nói đến nâng cấp, nó thực sự đau đớn vì nó có nghĩa là chúng ta phải đi qua từng dự án, xóa các tham chiếu cũ và sau đó nạp lại các gói mới nhất từ ​​NuGet. Ví dụ như hôm nay, tôi đã được giao nhiệm vụ nâng cấp Prism từ 5.0 lên 6.0 (có thay đổi đột ngột) và điều này có nghĩa là ngoài việc sửa tất cả các xung đột không gian tên, v.v ... mà tôi phải đi qua mọi dự án, xóa các tài liệu tham khảo cũ, thêm các dependecies mới và rửa sạch và lặp lại.Có cách nào thông minh để xử lý các gói phụ thuộc trong NuGet?

Câu hỏi của tôi là, có cách nào thông minh hơn để giải quyết vấn đề này hoặc đây có phải là cách tiếp cận tiêu chuẩn không?

Nhiều cảm ơn trước,

Cập nhật:

tôi chủ yếu quan tâm đến việc nâng cấp "lớn" mà không hiển thị trên quản lý gói. Phiên bản 5.0 -> 6.0 nâng cấp sẽ được coi là bản nâng cấp chính và do đó, sẽ không có bản cập nhật tự động được áp dụng cho trình quản lý gói NuGet. Tôi không mong đợi NuGet có thể tự động làm điều này cho tôi vì những nâng cấp như vậy có thể (và thường làm) bao gồm những thay đổi đột phá nhưng tôi muốn biết liệu có cách nào để thực hiện những nâng cấp lớn ít đau đớn hơn xóa hay không các tài liệu tham khảo từ các dự án và packages.config cho mỗi dự án và sau đó thêm chúng lại bằng NuGet. Đối với một dự án tương đối lớn, điều này rất tốn thời gian và tôi đã tự hỏi liệu có ai có cách quản lý tốt hơn các phụ thuộc đó hay không.

+0

Tôi nghĩ bạn vẫn chưa làm việc với VS2015 ... Bạn đang làm việc với phiên bản Visual Studio nào? –

+0

@ DeblatonJean-Philippe 2013. Tôi rất muốn nâng cấp lên năm 2015 nhưng tiếc là điều đó không khả thi tại thời điểm này (giấy phép của công ty, v.v.) – kha

+0

@kha (sau khi cập nhật) Tôi không chắc tôi hiểu. Tôi đã thực hiện một bản cập nhật lớn của Entity Framework từ v5.0.0 đến v6.1.3 thông qua NuGet Package Manager, và có những thay đổi phá vỡ, vì vậy tôi cũng phải sửa chúng. Các tham chiếu trong tệp app.config/web.config được cập nhật tự động, tất cả những gì tôi phải làm là thay đổi một vài vấn đề không gian tên trong các câu lệnh sử dụng. – djm61

Trả lời

3

Nếu bạn sử dụng VS2013 như bạn nói, bạn có thể quản lý TẤT CẢ các gói NuGet của bạn bằng cách nhấp chuột phải vào Giải pháp của bạn và chọn 'Quản lý gói NuGet cho giải pháp'. Điều này sẽ trả về một hộp thoại nơi bạn có thể xem tất cả các gói được cài đặt cho tất cả các dự án trong giải pháp và tất cả các gói có bản cập nhật có sẵn. Khi bạn nâng cấp các gói, VS sẽ xử lý tất cả các thay đổi tham chiếu cần thiết. Nếu gói có các thay đổi đột phá, thì bạn vẫn còn trên móc để sửa chữa chúng.

Tuyên bố từ chối trách nhiệm: Tôi chưa bao giờ làm việc trên dự án/giải pháp WPF nhưng đối với ứng dụng Web/Biểu mẫu, gói NuGet được xử lý theo cách này.

+0

Cảm ơn bạn @ djm61. Vui lòng xem cập nhật của tôi trong bài đăng gốc của tôi. – kha

0

Tôi có thể hiểu nỗi đau của bạn vì tôi có vấn đề tương tự như bạn, nhưng không có cách nào dễ dàng. nhưng chắc chắn bạn cần phải phá vỡ quá trình khác với sự phát triển hàng ngày của bạn và sự phụ thuộc vào bản cập nhật phụ thuộc của bạn.

cho dự án tôi đã làm việc, tôi sử dụng đường dẫn lưu trữ chung được chia sẻ giữa các giải pháp mà bạn làm việc và bạn cần xóa tất cả các tham chiếu thư mục giải pháp để có trạng thái sạch.

Đối với mỗi giải pháp bạn làm việc trên bạn cần phải sửa đổi các nhóm tài sản đó trỏ đến kho mục tiêu chung (Tôi đang sử dụng đường dẫn tương đối)

Khi tất cả những điều thiết lập, bạn thực sự có thể thực hiện một bản cập nhật với một kịch bản (tôi đang sử dụng python thời gian chạy script)

bạn thực sự có thể nhìn vào setting up common nuget-packages-folder for reference updates để xem chi tiết, nhưng nó có vẻ như bạn nhìn vào cho quá trình tự động hóa

0

những gì tôi đã có một vấn đề tương tự khi cố gắng nâng cấp nhiều gói với các vấn đề kênh alpha trong Xamarin Studio, cũng không có quan hệ của VS 2015 NuGet quản lý. Tôi đã viết một số very simple PowerShell script mà tôi chạy nhiều lần trong ngày.

# 
# This script updates local ibGib NuGet packages for mobileGib Android app solution. 
# For convenience in copy+paste in manager console: 
# ../UpdateLocalNugetPackages.ps1 

Update-Package commonGib 
Update-Package ibGib 
Update-Package languageGib.Biz 
Etc. 

Tôi tin rằng bạn có thể điều chỉnh các lệnh NuGet phù hợp với nhu cầu của mình.

Ngoài ra, trong trường hợp bạn không biết về nó, bạn chắc chắn nên đọc số NuGet command line reference. Tôi có thể bị nhầm lẫn, nhưng có vẻ như kịch bản của bạn có thể thực hiện được bằng lệnh Update.

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