我们最近遇到了 NuGet 包更新和 TFS 源代码控制集成的问题。这给我们的团队带来了很多麻烦,让我们在完全采用 NuGet 包时犹豫不决。
问题/错误:不是更新某些项目“package.config”文件,而是将它们从文件系统中删除(并在 TFS 源代码控制中标记为已删除)我不知道为什么。
我们看到的行为如下:
- 在 VS.NET 2012 中打开解决方案(大约 18 个项目)
- 通过包管理对话框启动解决方案级别包更新到最新版本,如此处所述。
- package.config 存在并且是所述选定解决方案中项目的一部分。
- 这些 packages.configs 尚未从 TFS 中签出。
- 发生 NuGet 包更新,选择 package.config 将从项目中删除并在 TFS 中标记为已删除,并且引用保留在项目中更新到当前版本。
- 显然,这意味着当我签入解决方案和项目时,packages.config 将被删除,使未来的更新(我相信)像上面的项目一样痛苦,NuGet 不会注意到。
我注意到这一点并撤消签出并收到此错误:
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
有什么我想念的吗?