NuSpec生成的NuGet文件正在解析错误版本的依赖项-我如何强制它执行其他操作?
我已经为我的.NET项目创建了一个NuSpec文件,如下所示: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>
<?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>