【问题标题】:Nuget package not updating in Visual StudioNuget 包未在 Visual Studio 中更新
【发布时间】:2019-07-15 13:38:37
【问题描述】:

我正在创建一个 nuget 包,其中包含一些 dll。在这个包的第一次迭代之后,我的团队负责人要求我添加另一个 dll。我将它添加到 nuspec 文件中,从服务器中删除旧包,然后推送更新的包。我进入服务器并验证新添加的 dll 是否存在于 nuget 包中(即我解压缩 nuget 包并检查它的内容)。

到目前为止,一切看起来都很好。现在,我将新创建的包安装到一个测试项目中,然后清理并构建。当我检查 bin 文件夹时,它没有新添加的 dll。它仍然是与第一个包迭代相同的 dll 集,但在 nuget 服务器上它具有所有更新的 dll。

我已经cleared the nuget cache,删除了旧包并重新应用了更改,然后重新启动了 Visual Studio,都没有成功。

我认为根本原因是版本号没有随着每次迭代而增加,这是由于我的团队负责人设定的要求(这对包本身来说是合乎逻辑的)。例如,当我更新 Package-v1 时,下一次更新仍然是 Package-v1。

如何强制 Visual Studio 从服务器获取最新版本?另外,如果您知道,我想知道为什么会发生这种情况。

【问题讨论】:

  • the root cause is from the version number not being incremented with each iteration 包含一个新的 DLL 应该会导致版本升级。您没有按照设计的方式使用 NuGet,并且想知道为什么它不起作用。
  • @DanWilson 我知道我不是。除了这个之外,所有包都会递增,因为版本号由它正在使用的 dll 之一决定。此外,这是我的团队负责人设定的要求。我没有增加它的选项。
  • NuGet 包被设计为不可变的。您可以尝试更新它们,但随后会遇到您所面临的问题。您的团队负责人正在推荐一种违反此规则的方法。此时您能做的最好的事情就是升级包含的 DLL 的版本并使用它来创建一个新包。
  • @DanWilson 不幸的是,我无法增加 dll 的版本号,因为它是由第三方供应商管理的。但是,我将增加包版本(尽管是 dll 版本)并与我的团队负责人讨论改变我们的方法。
  • 我感受到你的痛苦。包显然缓存在某处,我只是不确定在哪里。

标签: c# visual-studio nuget package package-managers


【解决方案1】:

如何强制 Visual Studio 从服务器获取最新版本?另外,如果您知道,我想知道为什么会这样。

出现此问题的原因是 nuget 始终首先使用 nuget 缓存或 global-packages 文件夹,以避免下载计算机上已存在的包,从而提高安装、更新和还原操作的性能。

因此,要解决此问题,我们应该找出 nuget 缓存并将其删除。这取决于 nuget 包管理类型和nuget.config 文件中的repositoryPath/globalPackagesFolder 设置。

如果你的 nuget 包管理类型是packages.config:

默认包缓存位于解决方案文件夹的\packages 文件夹中,您可以在\packages 文件夹中查看该包。如果没有,请检查您是否有任何nuget.config 设置:

如果是,包缓存将保存在新文件夹YourCustomFolder,从该文件夹中删除该包。

如果你的 nuget 包管理类型是packagereference:

默认包缓存位于全局包文件夹中:

C:\Users\<UserName>\.nuget\packages

您可以删除该文件夹中的包,如果您无法从该全局包文件夹中找到该包,请检查您是否有任何 nuget.config 设置:

<add key="globalPackagesFolder" value="YourCustomFolder" />

如果是,从新文件夹中删除包。

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2021-05-07
    • 1970-01-01
    • 2019-11-26
    • 2021-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-16
    • 1970-01-01
    相关资源
    最近更新 更多