我们有一个内部开发的Nuget软件包,并将大量与MVC相关的资产添加到任何项目中 - Index.cshtml
文件夹中的Views\Home
视图,{ {1}}和HomeController
文件夹以及Controllers
文件夹中包含一些静态文件(其中包括)。
每次我们创建新版本的软件包并将其拉入TFS源代码控制下的项目时,首先卸载软件包的当前版本(标准Nuget行为)。这会导致所有资产在源代码管理中进入挂起删除状态。每当文件夹清空所有文件时,该文件夹也会进入挂起删除状态。
当安装新版本的Nuget软件包时,软件包管理器会抛出错误,因为它尝试复制的资产已经设置为delete,或者在文件夹的情况下将父级设置为delete。
有没有办法处理这种情况,要么强制TFS在安装新软件包时有效取消删除资产,要么在卸载时首先删除它们?
答案 0 :(得分:0)
虽然有一些钩子和方法可以处理这个问题(挂钩IVsPackageInstallerEvents
或通过init/install/uninstall.ps1
脚本管理它,但使用Nuget包恢复可能更容易。
建议的做法是不将“packages”文件夹签入源代码控制,而是使用NuGet包还原在构建期间还原包。更多信息here。
答案 1 :(得分:0)
我相信这已在最新的TFS / Visual Studio / Nuget组合中得到解决。
所以挂在那里,就有希望。
但是,对于仍然停留在较旧版本的我们来说,我发现手动从packages.config中删除软件包条目最简单,然后使用nuget软件包管理器来安装(而不是更新)该软件包的最新版本,副作用最少。