我正在使用 .net core 3.x (LTS) nuget 想要安装 5.0,如何确保它不会安装非 LTS 版本?
i'm using .net core 3.x (LTS) nuget want to install 5.0, how to make sure it wont install the non-LTS version?
我正在处理的项目必须只使用 LTS 版本的 .net 核心版本 3.x
有没有办法让 nuget 忽略上面的任何东西 3.x,现在如果我想更新任何包,nuget 默认设置版本 5.0.0,这不是我想要的
是的,这是 NuGet 的一个非常烦人的行为 - 从逻辑上讲,它应该只向您显示与 您项目的 .NET 版本 Core/Standard/Framework/whatever 兼容的包更新。不幸的是,NuGet UI 的大部分功能似乎都没有逻辑。
谢天谢地,通过显式 version ranges 提供了支持。假设您的 .csproj 包含以下包参考:
<PackageReference
Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.1.9" />
您可以通过将其更改为以下内容来强制该引用永远不允许更新到版本 5.0.0:
<PackageReference
Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="[3.1.9,5.0.0)" />
不幸的是(请参阅前面提到的 NuGet 中缺乏逻辑),是否应该有此包的新版本(例如 3.1.10 - 目前),并且您选择要更新它,NuGet 将丢弃范围表达式并将其更改回特定版本:
<PackageReference
Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.1.10" />
我的回答看起来像是被接受的答案,但是,我更喜欢以受限的方式手动更新软件包以避免使用非 LTS 版本:
<PackageReference
Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="[3.1.10,3.1.10]" />
这种版本范围方式将强制 NuGet 永远不会更新包,除非我手动更改上限。但是,我应该在更新后重写范围。
我正在处理的项目必须只使用 LTS 版本的 .net 核心版本 3.x
有没有办法让 nuget 忽略上面的任何东西 3.x,现在如果我想更新任何包,nuget 默认设置版本 5.0.0,这不是我想要的
是的,这是 NuGet 的一个非常烦人的行为 - 从逻辑上讲,它应该只向您显示与 您项目的 .NET 版本 Core/Standard/Framework/whatever 兼容的包更新。不幸的是,NuGet UI 的大部分功能似乎都没有逻辑。
谢天谢地,通过显式 version ranges 提供了支持。假设您的 .csproj 包含以下包参考:
<PackageReference
Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.1.9" />
您可以通过将其更改为以下内容来强制该引用永远不允许更新到版本 5.0.0:
<PackageReference
Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="[3.1.9,5.0.0)" />
不幸的是(请参阅前面提到的 NuGet 中缺乏逻辑),是否应该有此包的新版本(例如 3.1.10 - 目前),并且您选择要更新它,NuGet 将丢弃范围表达式并将其更改回特定版本:
<PackageReference
Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.1.10" />
我的回答看起来像是被接受的答案,但是,我更喜欢以受限的方式手动更新软件包以避免使用非 LTS 版本:
<PackageReference
Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="[3.1.10,3.1.10]" />
这种版本范围方式将强制 NuGet 永远不会更新包,除非我手动更改上限。但是,我应该在更新后重写范围。