【问题标题】:Nuget packages.config and specific versionNuget packages.config 和特定版本
【发布时间】:2012-03-01 13:06:21
【问题描述】:

我正在尝试按照本指南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 包会将依赖项列为 >= 4.0.7,它会引入最新版本 4.0.8。

我怎样才能阻止这种情况,或者最好让 Nuget 从 packages.config 中提取依赖项,但允许我覆盖特定的依赖项?

【问题讨论】:

    标签: c# nuget


    【解决方案1】:

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

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

    这样可以确保当项目引入依赖项时,它将是 = 4.0.7 而不是 >= 4.0.7

    【讨论】:

    • 虽然 [4.0.7,4.0.7] 显然也可以工作,但 [4.0.7] 应该 工作。如果不是,则存在错误。它对我有用,但我不知道你在做什么。请report a bug 提供您所做的一切,以便我们修复它。谢谢!
    【解决方案2】:

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

    • 创建了一个类库
    • 通过 NuGet 添加了 Json.NET(它安装了 4.0.8)
    • 已执行nuget spec
    • 在 .nuspec 中添加了 &lt;dependencies&gt;&lt;dependency id="Newtonsoft.Json" version="[4.0.7]" /&gt;
    • 已执行nuget pack
    • 在包资源管理器中打开包;它将依赖项显示为 '= 4.0.7'
    • 在一个新项目中安装了我的包;它将依赖项显示为“= 4.0.7”并安装 4.0.7

    也许您没有使用最新版本的 nuget.exe 或 NuGet Visual Studio 扩展?当您说它“列出依赖项”时,您在哪里看到?当你的包被安装时,在包资源管理器中,还是在其他地方?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-14
      • 1970-01-01
      • 2015-04-03
      相关资源
      最近更新 更多