【发布时间】: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