我们最近遇到了nuget包更新和TFS源代码控制集成的问题。这给我们的团队带来了麻烦,让我们对完全采用nuget套件犹豫不决。
问题/错误;而不是更新某些项目“package.config”文件,它们正从文件系统中删除(并在TFS源代码控制中标记为已删除...)我无法解决为什么...
我们看到的行为如下:
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。环境统计:
有什么我想念的吗????谢谢
对Visual Studio Online进行简单的代码检查就可以了。
这里(可能)发生的事情是你有一个.dll的先前版本(或相同版本)作为参考,并且在某一点(无论你做了它还是VS做了它),它删除了引用。虽然您没有在文件夹中看到引用,但TFS / GIT签入过程仍在等待“检入”您已将其删除的事实。因此,如果你没有检查过这个事实,VS认为它仍然存在,而实际上并非存在。您可以在团队资源管理器区域中验证这一点,在该区域中您应该能够看到已删除的.dll(通过它指示的行)。
有点愚蠢,但就是这样。
我也有这个问题。
解决这个问题:
在此之后,您可以安装Nuget软件包而不会收到TF400024错误。
尝试:
我们的解决方法是检查整个解决方案,然后更新您的NuGet包。
我有类似的问题,我做了以下事情:
所有:
如果从TFS中检出代码,并且因为包之间的复杂关系无法重新加载一个或多个nuget,我就这样做了:
但只需确保代码在上次签入之前已正常工作。
谢谢,
-Yuan Z.
我有同样的问题。问题是我以前安装和卸载了包。即使我在安装后将项目检入TFS,该包仍保留在我的TFS解决方案的packages文件夹中。
为了解决这个问题,我打开了Source Control Explorer窗口并找到了包安装错误消息中标识的问题文件夹:“\ packages [folder] [package] .nupkg上的更改无法撤消,因为文件已存在于\ packages [folder] [package] .nupkg。必须从磁盘中删除该文件才能使撤消成功。“
然后我删除了\ packages [folder]并签入。
在此之后,我的NuGet包安装没有问题。
在更新软件包之前清除nuget缓存可以解决问题。