我正在尝试按照本指南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中获取依赖关系,但允许我覆盖特定的依赖项?
答案 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 spec
<dependencies><dependency id="Newtonsoft.Json" version="[4.0.7]" />
添加到.nuspec nuget pack
也许您没有使用最新版本的nuget.exe或NuGet Visual Studio扩展程序?当你说它“列出依赖”时,你在哪里看到它?安装软件包时,在Package Explorer中,还是在其他地方安装?