3

我为我的 .NET 项目创建了一个 NuSpec 文件,如下所示:

<?xml version="1.0"?>
<package>
  <metadata>
    <id>$id$</id>
    <version>$version$</version>
    <title>$title$</title>
    <authors>Author</authors>
    <description>My Project</description>
    <owners>Me</owners>
    <dependencies>
    </dependencies>
  </metadata>
</package>

我的项目还有两个 NuGet 提供的依赖项,它们是:

<package id="Autofac" version="3.5.2" targetFramework="net451" />
<package id="Autofac.Extras.NLog" version="1.2.3" targetFramework="net451" />

当我使用这个 NuSpec 为我的项目创建 NuGet 包时,NuGet 足够聪明,可以将这些额外的依赖项拉入。当我在新项目中安装我的 NuGet 包时,我也获得了AutofacAutofac.Extras.NLog依赖项,被引用并自动插入到包中.config 用于我的新项目。

但是......我得到的 Autofac 版本是错误的。而不是版本3.5.2我得到版本2.6.1.841

<package id="Autofac" version="2.6.1.841" targetFramework="net451" />
<package id="Autofac.Extras.NLog" version="1.2.3" targetFramework="net451" />

现在,Autofac.Extras.NLog依赖于≥ 2.2.4.900(在撰写本文时)。我有两个问题:

  • 看起来 NuGet 似乎首先Autofac.Extras.NLog通过安装Autofac 2.6.1.841. 当谈到实现我的项目的 Autofac 依赖时,它看到 Autofac 已经安装,因此什么都不做。如何让 NuGet 解析 Autofac 对 version 的依赖3.5.2
  • 即使 NuGet 正在解决“错误”的 NuGet 依赖(至少出于我的目的),为什么它解析为2.6.1.841而不是2.2.4.900,这是Autofac.Extras.NLog依赖项中指定的最低版本?
4

3 回答 3

0

您可以通过在一对方括号中指定版本号来限制要引用的工件版本。请在下面找到样本

<package id="Autofac" version="[3.5.2]" targetFramework="lib/net45" />

使用上面的行编辑您的 packages.config 文件,看看是否有效..!!

于 2015-05-25T13:35:36.257 回答
0

一种解决方案是将这些依赖项添加到 NuSpec 文件中:

<?xml version="1.0"?>
<package>
  <metadata>
    <id>$id$</id>
    <version>$version$</version>
    <title>$title$</title>
    <authors>Author</authors>
    <description>My Project</description>
    <owners>Me</owners>
    <dependencies>
      <group targetFramework="net451">
        <dependency id="Autofac" version="3.5.2"/> <!-- EXTRA DEPENDENCY -->
      </group>
    </dependencies>
  </metadata>
</package>

最好知道是否有一个解决方案,每次您打包的项目中存在依赖项版本更改时,您都不必维护 NuSpec 文件。

于 2015-05-27T11:00:29.637 回答
0

看起来 Nuget 3.5(现在处于 Beta 版)终于解决了这个问题。我在我的项目上进行了测试,并且正确计算了依赖项(Nuget 3.4 没有正确计算它们)。

Nuget 下载页面

这是拉取请求: https ://github.com/NuGet/NuGet.Client/pull/632/files

于 2016-07-25T12:02:48.777 回答