使用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
没有&#39的版本上;我的应用程序更新我的应用程序到我的包源的新版本?
{
"version": "1.0.0-*",
"dependencies": {
"NETStandard.Library": "1.6.0",
"Newtonsoft.Json": "9.0.1" //how can i pin to 9.0.1 ??
},
}
这个nuget documentation中的图#2强调这是可能的,但是没有提供这样做的语法。
- 更新 -
我使用两个.net核心类库和我的本地文件系统作为软件包存储库进行了测试。我创建了一个名为UpdateMeDependencyLib
的类库,并将其打包为v1.0.0,我通过nuget从第二个项目中消耗它。下面是使用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包。创建UpdateMeDependencyLib
的v1.1.0后,我现在获得以下经验
UpdateMeDependencyLib
输出v1.1.0到其bin目录
所以它看起来只是简单地使用&#34; 1.0.0&#34;在我的消费库中没有固定它,当我的NuGet源中出现新版本时它会自动更新。
答案 0 :(得分:1)
您需要为ref
使用以下表示法"UpdateMeDependencyLib": {
"version": "1.0.0",
"target": "package"
}
由于这两个项目在同一个解决方案中,系统不会使用您的本地软件包repo来解决依赖关系。它直接使用项目作为参考。因为解决方案中不再存在引用1.0.0(并且因为"UpdateMeDeepencyLib": "1.0.0"
表示&gt; = 1.0.0),所以它使用Nuget规则&#34;最低适用版本&#34;并通过引用1.1.0项目来解决依赖关系。请注意,依赖关系树中UpdateMeDependencyLib的图标不是nuget文件。
我能弄清楚的是,我们如何严格地将依赖关系设置为1.0.0,在这种情况下,打破构建。
答案 1 :(得分:1)
要锁定特定版本,请将版本号放在方括号内。
"UpdateMeDependencyLib": {
"version": "[1.0.0]",
"target": "package"
}
更新后您需要执行恢复包。