2012-03-01 29 views
7

tôi đang cố gắng để tạo ra một gói NuGet từ dự án của tôi theo hướng dẫn này http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-packageNuGet packages.config và phiên bản cụ thể

tôi đã tạo thành công một nuspec và nupkg. Dự án của tôi chứa một sự phụ thuộc vào Json.NET mà tôi đã cài đặt thông qua Nuget. Tuy nhiên, tôi muốn chỉ định một phiên bản cụ thể của Json.NET để sử dụng, phiên bản 4.0.7. Tôi được thêm vào dưới đây để nuspec tôi:

<dependencies> 
    <dependency id="Newtonsoft.Json" version="[4.0.7]" /> 
</dependencies> 

Khi tôi chạy nuget pack có vẻ như để phát hiện tôi có một packages.config

Using 'MyProject.nuspec' for metadata. 
Found packages.config. Using packages listed as dependencies. 

Điều này dường như hoàn toàn bỏ qua sự phụ thuộc định nghĩa của tôi trong nuspec như cài đặt Gói Nuget liệt kê các phụ thuộc dưới dạng> = 4.0.7 mà kéo trong phiên bản mới nhất 4.0.8.

Làm thế nào tôi có thể ngăn chặn điều này hoặc tốt nhất là giữ Nuget kéo phụ thuộc từ packages.config nhưng cho phép tôi ghi đè phụ thuộc cụ thể?

Trả lời

18

Tôi đã gặp vấn đề tương tự. Bạn cần phải xác định một phiên bản chính xác như thế này

<dependencies> 
<dependency id="Newtonsoft.Json" version="[4.0.7,4.0.7]" /> 
</dependencies> 

Vì vậy, đó sẽ đảm bảo khi dự án kéo trong sự phụ thuộc nó sẽ = 4.0.7 không> = 4.0.7

+1

Mặc dù [4.0.7,4.0.7] rõ ràng sẽ hoạt động, [4.0.7] * nên * hoạt động. Nếu không, có một lỗi. Nó làm việc cho tôi, nhưng tôi không biết chính xác những gì bạn đang làm. Vui lòng [báo cáo lỗi] (http://nuget.codeplex.com/WorkItem/Create) với chính xác những gì bạn đã làm, để chúng tôi có thể khắc phục lỗi đó. Cảm ơn! –

3

Cách mà bạn chỉ định phiên bản của bạn đúng; như được hiển thị trong số versioning docs, [1.0] có nghĩa là 'phiên bản == 1.0'. Hành vi bạn mô tả sẽ là một lỗi, nhưng tôi không thể tái tạo lỗi. Những gì tôi đã làm:

  • Tạo một thư viện lớp
  • Added Json.NET qua NuGet (nó được cài đặt 4.0.8)
  • Exec'd nuget spec
  • Added <dependencies><dependency id="Newtonsoft.Json" version="[4.0.7]" /> đến .nuspec
  • Exec 'd nuget pack
  • Mở gói trong Package Explorer; nó cho thấy sự phụ thuộc là '= 4.0.7'
  • Đã cài đặt gói của tôi trong một dự án mới; nó cho thấy sự phụ thuộc như '= 4.0.7' và cài đặt 4.0.7

screen capture screen capture 2

Có lẽ bạn đang không sử dụng phiên bản mới nhất của nuget.exe hoặc phần mở rộng NuGet Visual Studio? Khi bạn nói nó "liệt kê sự phụ thuộc", bạn đang thấy điều đó ở đâu? Khi gói của bạn được cài đặt, trong Package Explorer, hoặc ở một nơi khác?

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