NuSpec生成的NuGet文件正在解析错误版本的依赖项-我如何强制它执行其他操作?

NuSpec生成的NuGet文件正在解析错误版本的依赖项-我如何强制它执行其他操作?,nuget,nuget-package,nuget-spec,Nuget,Nuget Package,Nuget Spec,我已经为我的.NET项目创建了一个NuSpec文件,如下所示: <?xml version="1.0"?> <package> <metadata> <id>$id$</id> <version>$version$</version> <title>$title$</title> <authors>Author</authors>

我已经为我的.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>
现在,
Autofac.Extras.NLog
的依赖项为
≥ 2.2.4.900
(在编写本文时)。我有两个问题:

  • 看起来NuGet首先通过安装Autofac 2.6.1.841来实现对Autofac.Extras.NLog的依赖。当谈到我的项目的Autofac deptency时,它看到Autofac已经安装,因此什么也不做如何让NuGet将Autofac依赖项解析为版本
    3.5.2
  • 即使NuGet正在解决“错误”的NuGet Depdency(至少就我而言),为什么它要解决
    2.6.1.841
    而不是
    2.2.4.900
    ,后者是
    Autofac.Extras.NLog
    依赖项中指定的最低版本

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

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


用上面的一行编辑packages.config文件,看看这是否有效

解决方案是将这些依赖项添加到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>

$id$
$version$
$title$
作者
我的项目
我
如果有一个解决方案,您不必在每次打包的项目中出现依赖项版本更改时都维护NuSpec文件,那还是很好的。

看起来Nuget 3.5(现在是Beta版)最终解决了这个问题。我在我的项目上进行了测试,相关性计算正确(Nuget 3.4没有正确计算)

这是pull请求:

如果您在消费项目中这样做,则效果很好。然而,我认为如果你把它放在NuGet打包的项目中,它是不起作用的。我不希望我的项目的使用者自己添加这个NuGet引用,或者之后将其修改为3.5.2版。
<package id="Autofac" version="[3.5.2]" targetFramework="lib/net45" />
<?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>