Nuget packages.config和特定版本

时间:2012-03-01 13:06:22

标签: c# nuget

我正在尝试按照本指南http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-package

从我的项目中创建一个Nuget包

我已经成功创建了一个nuspec和nupkg。我的项目包含我通过Nuget安装的Json.NET依赖项。但是,我想指定要使用的特定版本的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包将依赖关系列为&gt; = 4.0.7,它引入了最新版本4.0.8。

我怎样才能阻止这一点,或者最好让Nuget从packages.config中获取依赖关系,但允许我覆盖特定的依赖项?

2 个答案:

答案 0 :(得分:18)

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

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

因此,这将确保项目何时拉入依赖项,它将是= 4.0.7而不是&gt; = 4.0.7

答案 1 :(得分:3)

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

  • 创建了一个类库
  • 通过NuGet添加了Json.NET(安装了4.0.8)
  • 执行nuget spec
  • <dependencies><dependency id="Newtonsoft.Json" version="[4.0.7]" />添加到.nuspec
  • 执行nuget pack
  • 在Package Explorer中打开包;它将依赖关系显示为'= 4.0.7'
  • 在新项目中安装我的包裹;它将依赖关系显示为'= 4.0.7'并安装4.0.7

screen capture screen capture 2

也许您没有使用最新版本的nuget.exe或NuGet Visual Studio扩展程序?当你说它“列出依赖”时,你在哪里看到它?安装软件包时,在Package Explorer中,还是在其他地方安装?