【问题标题】:Overwriting NuGet Package does NOT change the .NET Version覆盖 NuGet 包不会更改 .NET 版本
【发布时间】:2019-04-12 18:40:21
【问题描述】:

我有一个NET45 项目发布到 NuGet。出于内部原因(这不是生产应用程序),无论如何我都要求它始终是 1.0.1 版。我正在使用我自己的私有 NuGet 服务器,该服务器目前完全是最新的,并将 TeamCity 作为我的构建服务器。

-查看底部的TeamCity编辑/添加-

所以 4 年后,我不得不对这个 NuGet 包进行轻微更新。我这样做了,并将其重新发布为 1.0.1。我确实将allowOverrideExistingPackageOnPush 设置为true,并且我相当有信心代码已被覆盖。

除了一个微小的代码更改之外,我还将项目更改为 .NET 4.7.2,以及更新 nuspec From This, To This...

<!-- From this -->
<file src="bin\Release\....dll" target="lib\net45\....dll" />
<!-- To this -->
<file src="bin\Release\....dll" target="lib\net472\....dll" />

当我检查我的服务器时,我的 nupkg 看起来像这样:

以前是 net45,现在是 net472。成功了吗?

但是,我的消费应用程序(也不是生产应用程序),它的 Packages/ 文件夹,仅包含 ...1.0.1/lib/net45 文件夹。

我尝试了所有我能想到的方法来擦除、重新启动、清除缓存以及以其他方式从所有内容中删除该 1.0.1 包。但是,当我推送它时,它总是以只有一个 net45 文件夹结束。

最后,为了缓解我的疯狂,我允许我第一次推送1.0.2,令我惊讶的是,有一个net472 文件夹。太完美了。

那么,我该如何真正删除包 1.0.1 和/或更改任何挥之不去的记录,使其不会像 net45 一样卡住?

在 TeamCity 中,诊断菜单中有一个“缓存”页面。我四处寻找重置其中一些缓存的定义和原因,但没有任何与此相关的问题。此外,它表示不要触摸它,除非 TeamCity 团队成员告诉你这样做。不确定这是否相关,但如果是这样,具有该专业知识的人将不胜感激。

【问题讨论】:

    标签: teamcity nuget-package nuget-server nuspec nuget-spec


    【解决方案1】:

    这对我来说确实是一个缓存问题。但缓存是本地缓存,特别是通过 Visual Studio,但也可以是 NuGet 本地缓存。虽然整个基础架构都是正确的,但我的本地机器一直给我旧版本。

    在 VS 中,工具 > NuGet 包管理器 > 设置 > 清除所有 NuGet 缓存。

    【讨论】:

      猜你喜欢
      • 2018-03-16
      • 1970-01-01
      • 2020-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多