在TFS中更新nuget包时处理挂起的删除

时间:2013-08-28 15:31:32

标签: asp.net-mvc tfs nuget

我们有一个内部开发的Nuget软件包,并将大量与MVC相关的资产添加到任何项目中 - Index.cshtml文件夹中的Views\Home视图,{ {1}}和HomeController文件夹以及Controllers文件夹中包含一些静态文件(其中包括)。

每次我们创建新版本的软件包并将其拉入TFS源代码控制下的项目时,首先卸载软件包的当前版本(标准Nuget行为)。这会导致所有资产在源代码管理中进入挂起删除状态。每当文件夹清空所有文件时,该文件夹也会进入挂起删除状态。

当安装新版本的Nuget软件包时,软件包管理器会抛出错误,因为它尝试复制的资产已经设置为delete,或者在文件夹的情况下将父级设置为delete。

有没有办法处理这种情况,要么强制TFS在安装新软件包时有效取消删除资产,要么在卸载时首先删除它们?

2 个答案:

答案 0 :(得分:0)

虽然有一些钩子和方法可以处理这个问题(挂钩IVsPackageInstallerEvents或通过init/install/uninstall.ps1脚本管理它,但使用Nuget包恢复可能更容易。

建议的做法是不将“packages”文件夹签入源代码控制,而是使用NuGet包还原在构建期间还原包。更多信息here

答案 1 :(得分:0)

我相信这已在最新的TFS / Visual Studio / Nuget组合中得到解决。

所以挂在那里,就有希望。

但是,对于仍然停留在较旧版本的我们来说,我发现手动从packages.config中删除软件包条目最简单,然后使用nuget软件包管理器来安装(而不是更新)该软件包的最新版本,副作用最少。