Nuget包更新和Package.config删除问题(TF400024)

问题描述 投票:15回答:9

我们最近遇到了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,文件被标记为已删除,但它仍然存在于我的文件系统中?

下面列出的程序包管理器提供的输出并不表示删除了pacakage.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.

DEV。环境统计:

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

有什么我想念的吗????谢谢

nuget tfs2012
9个回答
19
投票

对Visual Studio Online进行简单的代码检查就可以了。


10
投票

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

有点愚蠢,但就是这样。


7
投票

我也有这个问题。

解决这个问题:

  1. 打开源代码管理资源管理器(Team Foundation)
  2. 找到解决方案的'packages'文件夹
  3. 勾选此文件夹

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


2
投票

尝试:

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

2
投票

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


0
投票

我有类似的问题,我做了以下事情:

  1. 从我的电脑中删除该文件。
  2. 检查更改。

0
投票

所有:

如果从TFS中检出代码,并且因为包之间的复杂关系无法重新加载一个或多个nuget,我就这样做了:

  1. 删除整个解决方案文件夹。
  2. 再次查看代码。
  3. 右键单击解决方案,然后单击“Restore NuGet Packages”

但只需确保代码在上次签入之前已正常工作。

谢谢,

-Yuan Z.


0
投票

我有同样的问题。问题是我以前安装和卸载了包。即使我在安装后将项目检入TFS,该包仍保留在我的TFS解决方案的packages文件夹中。

为了解决这个问题,我打开了Source Control Explorer窗口并找到了包安装错误消息中标识的问题文件夹:“\ packages [folder] [package] .nupkg上的更改无法撤消,因为文件已存在于\ packages [folder] [package] .nupkg。必须从磁盘中删除该文件才能使撤消成功。“

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

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


-2
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.