有没有办法禁用项目中安装的特定nuget包的更新?
我对一些javascript库包进行了一些本地修改,并且不希望将来有人更新我的更改。
我从未创建过我自己的nuget包,我猜测一个选项可能是分叉现有的包?
答案 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 />
)