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

5

我正在使用Aspose进行文档管理,我们的许可证只提供了一年的更新,现在已经过期。因此,当我们按照惯例更新软件包并获取最新版本的Aspose时,它会破坏我们的应用程序。有没有办法锁定这些软件包不会出现在Nuget Package Updates列表中,或者至少通过Nuget Update过程防止版本更改?我查看了各种NugetMicrosoft的参考资料,但没有看到任何信息,但是希望这里有人知道一些秘密酱汁?

Nuget Package Manager


为什么不干脆不更新它们呢?也许可以添加一个测试,如果版本号不匹配,则失败,并防止合并拉取请求。 - mason
1
我们有一个由10多名开发人员组成的团队,这是需要记住的另一件事情... - Serj Sagan
1
那为什么不按照我的建议添加一个测试呢? - mason
3个回答

2

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

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

对于我们而言,UmbracoCms包在下一个版本中有重大变化。

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

您可以在此处找到有关版本限制的更多信息。


2
最初的回答: 我能想到两种方法实现这个需求:
1. 创建一个新的 Nuget 包,并包含你希望锁定的引用。这样,它们就永远不会在更新列表中显示出来。
2. 参考 @mason 的建议,创建一个测试代码。首先编写查找具有所需名称的程序集的代码,然后可以检查其版本。你可以将其编写为精确匹配(最简单的方式),或者不超过特定版本(更麻烦,但你可以使用早期版本)。

1

一种方法是停止使用NuGet,手动引用DLL文件。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接