使用packages.config
文件指定 NuGet 依赖项时,我可以提供allowedVersions属性来指定SemVer字符串,该字符串定义我希望能够更新到的版本范围。通过使用[]
,我目前能够有效地将我的包固定到单个版本。例如:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Common.Logging" version="3.3.0" allowedVersions="[3.3.0, 3.3.0]" />
</packages>
现在,在 .net 核心项目中,我们必须project.json
指定 NuGet 依赖项(尽管它可能是短暂的),我如何将 NuGet 依赖项固定到一个dotnet restore
不会将我的应用程序更新为新版本的版本,可从我的包源?
{
"version": "1.0.0-*",
"dependencies": {
"NETStandard.Library": "1.6.0",
"Newtonsoft.Json": "9.0.1" //how can i pin to 9.0.1 ??
},
}
此nuget 文档中的图 #2仅暗示这是可能的,但未提供执行此操作的语法。
- 更新 -
我使用两个 .net 核心类库和我的本地文件系统作为包存储库对此进行了测试。我创建了一个名为的类库UpdateMeDependencyLib
并将其打包为 v1.0.0,并通过 nuget 从第二个项目中使用它。下面是来自第二个类库的 project.json 消耗UpdateMeDependencyLib
{
"version": "1.0.0-*",
"dependencies": {
"NETStandard.Library": "1.6.0",
"UpdateMeDependencyLib": "1.0.0"
},
"frameworks": {
"netstandard1.6": {
"imports": "dnxcore50"
}
}
}
然后我更新UpdateMeDependencyLib
到版本 1.1.0 并重新打包,所以现在我的本地系统上有一个 v1.0.0 和一个 v1.1.0 nuget 包。创建v1.1.0后UpdateMeDependencyLib
我现在得到如下体验
- 在 Visual Studio 中编译项目(不更改使用者 project.json),将
UpdateMeDependencyLib
输出 v1.1.0 消耗到其 bin 目录- 如果我强制在消费者库上恢复包,我现在会收到 Nuget 警告“指定的 NU1007 依赖项是 UpdateMeDependencyLib >= 1.0.0 但最终是 UpdateMeDependencyLib 1.1.0”
所以它看起来只是在我的消费库中使用“1.0.0”并没有固定它,当我的 NuGet 源中出现新版本时它会自动更新。