gpt4 book ai didi

nuget - project.json 指定 NuGet 依赖项的确切版本

转载 作者:行者123 更新时间:2023-12-03 18:37:52 25 4
gpt4 key购买 nike

当使用 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 documentation 中的图 #2 stronly 暗示这是可能的,但不提供执行此操作的语法。

-- 更新--

我使用两个 .net 核心类库和我的本地文件系统作为包存储库对此进行了测试。我创建了一个名为 UpdateMeDependencyLib 的类库并将其打包为 v1.0.0,然后我通过 nuget 从第二个项目中使用了它。下面是使用 UpdateMeDependencyLib

的第二类库中的 project.json
{
"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 的 Visual Studio 中编译项目(不更改消费者 project.json)将 v1.1.0 输出到其 bin 目录
    • 如果我在消费者库上强制恢复包,我现在会收到 Nuget 警告“指定的 NU1007 依赖项是 UpdateMeDependencyLib >= 1.0.0 但最终是 UpdateMeDependencyLib 1.1.0”

NU1007 warning

所以它看起来只是在我的消费库中使用“1.0.0”并没有固定它,当我的 NuGet 源中出现新版本时它会自动更新。

最佳答案

您需要为您的引用使用以下符号

"UpdateMeDependencyLib": {
"version": "1.0.0",
"target": "package"
}

由于这两个项目在同一个解决方案中,系统不会使用您的本地包 repo 来解决依赖关系。它直接使用项目作为引用。因为引用 1.0.0 不再存在于解决方案中(并且因为 "UpdateMeDeepencyLib": "1.0.0" 意味着 >= 1.0.0),它使用 Nuget 规则“最低适用版本”并通过引用1.1.0项目来解决依赖。请注意,依赖树中 UpdateMeDependencyLib 的图标不是 nuget 图标。

我想不通的是,我们如何严格地将依赖项设置为 1.0.0,并在这种情况下中断构建。

关于nuget - project.json 指定 NuGet 依赖项的确切版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39070297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com