2012-03-01 43 views
7

我想这个指南http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-package的NuGet packages.config和特定版本

我已经成功地创建一个nuspec和nupkg以下从我的项目中创建一个NuGet包。我的项目包含一个依赖于Json.NET,我通过Nuget安装。不过,我想指定一个特定版本的Json.NET来使用,版本为4.0.7。我添加了下面我nuspec:

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

当我运行nuget pack它似乎发现我有一个packages.config

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

这似乎完全忽略nuspec我定义的依赖性,安装Nuget软件包将依赖关系列为> = 4.0.7,它引入最新版本4.0.8。

我该如何阻止这个,或者最好让Nuget从packages.config中取出依赖关系,但是允许我覆盖特定的依赖关系?

回答

18

我遇到了同样的问题。您需要定义一个确切的版本是这样

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

这样将确保在该项目中的依赖关系拉它将= 4.0.7不> = 4.0.7

+1

虽然[4.0.7,4.0.7]显然也会起作用,[4.0.7] *应该*起作用。如果不是,就有一个错误。它为我工作,但我不知道你在做什么。请[报告错误](http://nuget.codeplex.com/WorkItem/Create)与您所做的完全相同,因此我们可以修复它。谢谢! – 2012-03-01 18:04:32

3

的方式指定你的版本是正确的;如我们的versioning docs所示,[1.0]表示'version == 1.0'。您所描述的行为将会是一个错误,但我无法重现该错误。我所做的:

  • 创建一个类库
  • 新增Json.NET通过的NuGet(它安装4.0.8)
  • Exec'd nuget spec
  • 新增<dependencies><dependency id="Newtonsoft.Json" version="[4.0.7]" />到.nuspec
  • Exec的'd nuget pack
  • 在包资源管理器中打开包;它显示相关性为'= 4.0.7'
  • 将我的软件包安装在一个新项目中;它显示了依赖为 '= 4.0.7' 也许你不使用或最新版本nuget.exe的的NuGet的Visual Studio扩展安装4.0.7

screen capture screen capture 2

?当你说它“列出依赖性”时,你在哪里看到这个?当你的软件包安装时,在Package Explorer或其他地方?