如何从 Nuget 更新锁定软件包版本

问题描述 投票:0回答:4

我正在使用

Aspose
进行一些文档管理,我们的许可证只提供一年的更新,现已过期。因此,当我们以典型的方式更新软件包并获取最新版本的
Aspose
时,它会破坏我们的应用程序。有没有办法锁定这些软件包,使其不显示在
Nuget Package Updates
列表中,或者至少防止通过
Nuget Update
过程更改版本?我查看了各种
Nuget
Microsoft
参考文献,但没有看到任何内容,但我希望这里有人知道一些秘密武器?

asp.net-core nuget
4个回答
2
投票

我可以想到的两种方法:

  • 创建一个您不修改的新 Nuget 包,其中包含您要锁定的引用。这样他们就永远不会出现在更新列表中。
  • 按照 @mason 建议创建一个测试。我将从代码开始,找到具有您想要锁定的名称的程序集,然后您可以检查其版本。您可以将其编写为完全匹配(简单)或不超过特定版本(更多工作,但您可以使用早期版本)

2
投票

我知道这个问题已经很老了,但是您可以在packages.config文件中添加一个属性来锁定版本,正如Matt Ward在这里回答的那样:

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

对于我们来说,UmbracoCms 软件包在下一版本中进行了重大更改。

<package id="UmbracoCms" version="7.15.5" allowedVersions="[7.15.5]" targetFramework="net472" />

您可以在此处

找到有关版本限制的更多信息

1
投票

一种方法是停止使用 NuGet 并手动引用 DLL。

  1. 查看
    bin
    文件夹(已编译的项目所在的位置)并将所有
    Aspose.*
    文件复制到项目目录中的新文件夹中。
  2. 卸载 Aspose NuGet 包。
  3. 在 Visual Studio 解决方案资源管理器中,右键单击“引用”->“添加引用”->“浏览”->“浏览”,然后从您在步骤 1 中创建的文件夹中选择 DLL。

0
投票

使用最新的

PackageReference
格式,只需在
.csproj
文件中的版本号周围添加方括号即可:

<PackageReference Include="MYPACKAGE" Version="[2.6.0]" />

这将冻结依赖版本,并且不会在更新中显示。

文档:https://learn.microsoft.com/en-us/nuget/concepts/package-versioning?tabs=semver20sort#version-ranges

附注这是一个老问题,但它仍然显示为我的#1 Google 结果,所以我添加了另一个答案。

© www.soinside.com 2019 - 2024. All rights reserved.