我为我的 .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 包时,我也获得了Autofac
和Autofac.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
依赖项中指定的最低版本?