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

时间:2014-03-21 15:56:18

标签: visual-studio nuget

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

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

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

3 个答案:

答案 0 :(得分:22)

您可以尝试constraining the package,因此您的项目只允许使用特定版本。然后,将阻止对任何较新版本的所有更新。

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

<package id="SomePackage" version="2.1.0" allowedVersions="[2.1.0]" />

答案 1 :(得分:0)

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

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

<ItemGroup>
    <PackageReference Include="EPPlus" Version="[4.5.3.3]" />
</ItemGroup>

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

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

您需要重新启动 VS 才能去掉包旁边的黄色三角形。

答案 2 :(得分:-1)

编辑:

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

所以这根本不是解决方案。我会把它留在这里给一些会尝试这个的随机谷歌员工,但它几乎没用。

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

<PackageReference Include="IdentityServer4.AspNetIdentity">`
  <Version>[3.1.1]</Version>
</PackageReference>

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

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

它与 allowedVersions= 不同,因为 AFAIK 您只能锁定到一个版本(例如,[3.1.0, 3.1.1](3.0.0, 3.1.1] 或任何其他不起作用的东西!)

(我知道我正在解决这个问题 - 接受的答案是关于旧的 <Package />,我的答案是关于新的 <PackageReference />