【问题标题】:NuGet Package updates & Package.config remove issue (TF400024)NuGet 包更新和 Package.config 删除问题 (TF400024)
【发布时间】:2013-03-15 20:33:43
【问题描述】:

我们最近遇到了 NuGet 包更新和 TFS 源代码控制集成的问题。这给我们的团队带来了很多麻烦,让我们在完全采用 NuGet 包时犹豫不决。

问题/错误:不是更新某些项目的“package.config”文件,而是将它们从文件系统中删除(并在 TFS 源代码控制中标记为已删除)我不知道为什么。

我们看到的行为如下:

  1. 在 VS.NET 2012 中打开解决方案(大约 18 个项目)
  2. 如here 所述,通过包管理对话框将解决方案级别的包更新到最新版本。
    • package.config 存在并且是所述选定解决方案中项目的一部分。
    • 这些 packages.configs 尚未从 TFS 中签出。
  3. 发生 NuGet 包更新,选择 package.config 已从项目中删除并在 TFS 中标记为已删除,并且引用仍保留在项目中更新到当前版本。
  4. 显然,这意味着当我签入解决方案和项目时,packages.config 将被删除,这使得未来的更新(我相信)很痛苦,因为上面的项目将会脱离 NuGet 的雷达。
  5. 我注意到这一点并撤消签出并收到此错误:

    TF400024: The change on xxx\packages.config cannot be undone because a file already exists at xxx\packages.config. The file must be deleted from disk for the undo to succeed.
    
    • 有趣的是,对于 TFS,文件被标记为已删除,但它仍驻留在我的文件系统中?

下面列出的包管理器提供的输出并不表明已删除 package.config 的项目存在任何问题。

Updating 'NugetPackageAssemblyA' from version '1.5.18.0' to '1.5.23.0' in project 'CommonUnitTests'.
 Removed reference 'AssemblyAA.dll' from project 'CommonUnitTests'
 Removed reference 'AssemblyBB.dll' from project 'CommonUnitTests'
 Removed reference 'AssemblyCC.dll' from project 'CommonUnitTests'
 Removed reference 'NugetPackageAssemblyA.dll' from project 'CommonUnitTests'
 Added file 'packages.config'.
 Removed file 'packages.config'
 Successfully removed 'NugetPackageAssemblyA 1.5.18.0' from CommonUnitTests.
 Added reference 'AssemblyAA' to project 'CommonUnitTests'
 Added reference 'AssemblyBB' to project 'CommonUnitTests'
 Added reference 'AssemblyCC' to project 'CommonUnitTests'
 Added reference 'NugetPackageAssemblyA' to project 'CommonUnitTests'
 'packages.config' already exists. Skipping...
 Successfully added 'NugetPackageAssemblyA 1.5.23.0' to CommonUnitTests.

开发。环境统计:

  • Nuget 包管理器:版本 2.2.40116.9051
  • Visual Studio 2012:版本 11.051106.01 更新 1

我有什么遗漏的吗?

【问题讨论】:

标签: visual-studio nuget


【解决方案1】:

将代码简单地签入到 Visual Studio Online 对我来说很有效。

【讨论】:

  • 来自微软的一个小问题,希望他们尽快修复它。我在解决这个问题上浪费了太多时间……我在参考资料和软件包中寻找问题,但所有问题都来自 TFS!什么?! >:(
  • 5 年后仍然没有得到 MS 的修复!
【解决方案2】:

这里发生的事情(很可能)是您有 .dll 的先前版本(或相同版本)作为参考,并且在某些时候(无论您是这样做还是 VS 这样做),它删除了该引用。虽然您没有在文件夹中看到引用,但 TFS / GIT 签入过程仍在等待“签入”您已将其删除的事实。所以如果你没有检查这个事实,VS 认为它仍然存在,而实际上它不是。您可以在团队资源管理器区域中验证这一点,您应该能够在该区域中看到已删除的 .dll(由一条穿过它的线表示)。

有点愚蠢,但事情就是这样。

【讨论】:

  • 绝对的救星!我有大约 50 个文件处于这种状态 - 但有了上述知识,我通过删除 Windows 资源管理器中的所有冲突文件、打开 Visual Studio 而不打开解决方案、打开团队资源管理器、撤消团队资源管理器中的更改来解决问题,然后获取以前删除的文件的最新版本。
  • 哦,是的,谢谢,我在 VS 上遇到了一个小问题,不包括我在签入时所做的更改。在我将 bootstrap 文件夹的删除内容包含在我的案例中,然后签入后它运行良好。
【解决方案3】:

我也有这个问题。

解决这个问题:

  1. 打开您的源代码管理资源管理器(Team Foundation)
  2. 找到解决方案的“packages”文件夹
  3. 签入此文件夹

在此之后,您将可以安装 Nuget 包而不会收到 TF400024 错误。

【讨论】:

    【解决方案4】:

    试试:

    • 解除所有项目与源代码管理的绑定
    • 安装 nuget 包
    • 再次重新绑定所有项目

    【讨论】:

    • 是的,这对我有用。但是,在此之后重新绑定时,不要忘记将新的 .nupkg 文件添加到源代码管理中。如果您在 Azure 上执行包还原,您将需要这些。
    【解决方案5】:

    我们的解决方法是检查整个解决方案,然后更新您的 NuGet 包。

    【讨论】:

      【解决方案6】:

      我遇到了同样的问题。问题是我之前已经安装和卸载了这个包。即使我在安装后将项目签入 TFS,但该包仍保留在我的 TFS 解决方案的 packages 文件夹中。

      为了解决,我打开了源代码管理资源管理器窗口并找到了包安装错误消息中标识的问题文件夹: “\packages[folder][package].nupkg 上的更改无法撤消,因为 \packages[folder][package].nupkg 中已经存在一个文件。必须从磁盘中删除该文件才能成功撤消。”

      然后我删除了 \packages[folder] 并签入。

      在此之后,我的 NuGet 包安装没有问题。

      【讨论】:

        【解决方案7】:

        当您升级包含内容文件的包时,NuGet 会卸载旧版本,删除文件并导致删除挂起的更改。我为避免这种情况所做的是:

        1. 获得干净的工作空间
        2. 打开packages.json
        3. 删除对旧 NuGet 包的引用
        4. 像第一次一样安装 NuGet 最新版本

        这样您就不必进行肮脏的签到。

        【讨论】:

          【解决方案8】:

          如果您从 TFS 签出代码,并且由于包之间的复杂关系您无法重新加载一个或多个 nuget,这就是我所做的:

          1. 删除整个解决方案文件夹。
          2. 再次签出代码。
          3. 右键单击解决方案,然后单击“还原 NuGet 包”

          但请确保上次签入之前使用的代码可以正常工作。

          【讨论】:

            【解决方案9】:

            我遇到了类似的问题,我做了以下操作:

            1. 从我的电脑中删除文件。
            2. 签入更改。

            【讨论】:

              【解决方案10】:

              在更新包之前清除你的 nuget 缓存可以解决问题。

              【讨论】:

                猜你喜欢
                • 2014-01-15
                • 1970-01-01
                • 1970-01-01
                • 2014-10-25
                • 2018-01-31
                • 2020-11-09
                • 1970-01-01
                • 2021-02-23
                • 1970-01-01
                相关资源
                最近更新 更多