【发布时间】:2019-08-13 13:55:52
【问题描述】:
我从两个项目创建了 Nuget 包:foo.csproj 和 bar.csproj。在使用nuget update 时,我希望bar 将foo 更新为匹配3.0.* 的latest version,并拒绝任何3.1.*:
bar packages.config
<packages>
<package id="Newtonsoft.Json" version="12.0.1" targetFramework="net461" />
<package id="foo" version="3.0.4" targetFramework="net472" allowedVersions="3.0" />
</packages>
bar.nuspec
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
<metadata>
<id>var</id>
<version>3.0.4</version>
<!-- omitted -->
<!-- no dependency node in this .nuspec file - good, I think -->
</metadata>
</package>
在我的 Nuget 提要中,我有:
- foo.3.0.0.nupkg
- foo.3.0.1.nupkg
- foo.3.0.2.nupkg
- foo.3.0.3.nupkg
- foo.3.0.4.nupkg
如果我调用 nuget update,它会正确更新 packages.config 文件 - 耶!
但是,当我调用 nuget pack bar.csproj 时,它会生成一个 .nupkg 文件,其中包含以下 bar.nuspec 文件:
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
<metadata>
<id>var</id>
<version>3.0.4</version>
<!-- omitted -->
<dependencies>
<dependency id="Newtonsoft.Json" version="12.0.1" />
<dependency id="foo" version="3.0.0" />
</dependencies>
</metadata>
</package>
我希望nuget pack 在.nupkg 文件中生成dependency 节点时遵守packages.config allowedVersions 属性。
我如何让nuget update 和nuget pack 一起工作以使bar 与foo 的最新3.0.* 版本(在本例中为3.0.4)保持同步?
【问题讨论】: