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