将nuget包更新限制为某些包的当前版本

Mar*_*arc 7 visual-studio nuget

有没有办法禁用项目中安装的特定nuget包的更新?

我已经对一些javascript库包进行了一些本地修改,并且不希望将来有人更新我的更改.

我从来没有创建自己的nuget包,我猜一个选项可能是分叉现有的包?

Ε Г*_*И О 29

我没有 package.config。(VS 2019,.NET Core 3.1)我所做的是更改项目的 .csproj,该项目包含我需要停止显示更新的包。

就我而言,它是 EPPlus,我将版本号括在方括号内。

<ItemGroup>
    <PackageReference Include="EPPlus" Version="[4.5.3.3]" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

之后,它不再显示在 Nuget 包管理器的“更新”选项卡上。

而且它也不提供任何从其他地方更新的选项。(已安装选项卡、解决方案的 Nuget 等)

您需要重新启动 VS 以消除软件包旁边的黄色三角形。

  • @RockingChair 请参阅 https://learn.microsoft.com/en-us/nuget/concepts/package-versioning#version-ranges (2认同)

Mat*_*ard 26

您可以尝试约束包,以便您的项目只允许使用特定版本.然后将阻止对任何较新版本的所有更新.

您可以通过编辑项目的package.config文件来完成此操作.例如,下面的行应该只允许使用版本2.1.0.

<package id="SomePackage" version="2.1.0" allowedVersions="[2.1.0]" />
Run Code Online (Sandbox Code Playgroud)

  • 这种方法真的对你有用吗?我已尝试相同的方法来限制更新,但它们仍然列在更新选项卡上 (2认同)
  • 有没有办法通过 CSProject 文件“PackageReference”而不是“Packages.config”使用 NuGetPackage 管理来执行此操作? (2认同)
  • @MattWard您可以通过将版本(例如4.61.0)放在括号中来限制它,如下所示:[4.61.0]。在“已安装”选项卡上您仍然会看到更新,但系统会建议您在“更新”选项卡上进行更新。 (2认同)

Jan*_* K. 8

编辑:

警告:请注意,这仅适用于“管理 [项目] 的 Nuget 包”(很少使用),不适用于“管理解决方案的 Nuget 包”(您每隔一天使用一次)。看评论。

所以这根本就不是解决办法。我会把它放在这里,供一些随机的谷歌用户尝试,但它几乎没有用。

您可以PackageReference像这样阻止单个版本的更新:

<PackageReference Include="IdentityServer4.AspNetIdentity">`
  <Version>[3.1.1]</Version>
</PackageReference>
Run Code Online (Sandbox Code Playgroud)

由于某种原因,它必须位于自己的元素中,而不是位于属性中,因此您必须手动编辑 .csproj。

VS2019看起来很有趣(一些黄色三角形),但只要重新启动它就会生效。

它不一样,allowedVersions=因为据我所知,您只能锁定一个版本(例如,[3.1.0, 3.1.1]或者(3.0.0, 3.1.1]其他不起作用的版本!)

(我知道我正在死灵地回答这个问题 - 接受的答案是关于旧标签的<Package />- 我的答案是关于新标签的<PackageReference />)。

  • 在 VS2022 中,这也适用于“管理解决方案的 Nuget 包” (6认同)