TFS 2015 在上一次成功构建后无法删除 NUnit 测试 dll

TFS 2015 Cannot delete NUnit test dlls after previous successful build

我正在 运行使用 NUnit 和 NUnit 测试适配器 NuGet 包在 TFS 2015 中进行一些非常简单的单元测试,但让测试通过的唯一方法是重新启动 TFS 服务,然后项目构建和测试通过一次。下次我 运行 时,我收到以下错误。

Build
(-1, 0)
Exception Message: Access to the path 'C:\Builds\RGDAgile\RGD.Common\src\RGD.Common\packages\NUnitTestAdapter.2.0.0\lib\nunit.core.dll' is denied. (type UnauthorizedAccessException)
Exception Stack Trace: at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.File.InternalDelete(String path, Boolean checkHost)
at System.IO.File.Delete(String path)
at Microsoft.TeamFoundation.Common.FileSpec.DeleteFile(String path, Boolean throwExceptionOnFailure)
at Microsoft.TeamFoundation.Common.FileSpec.DeleteDirectoryInternal(String path)
at Microsoft.TeamFoundation.Common.FileSpec.DeleteDirectoryInternal(String path)
at Microsoft.TeamFoundation.Common.FileSpec.DeleteDirectoryInternal(String path)
at Microsoft.TeamFoundation.Common.FileSpec.DeleteDirectoryInternal(String path)
at Microsoft.TeamFoundation.Common.FileSpec.DeleteDirectoryInternal(String path)
at Microsoft.TeamFoundation.Common.FileSpec.DeleteDirectory(String path, Boolean recursive, Boolean handleLongPaths)
at Microsoft.TeamFoundation.Build.Workflow.Activities.DeleteDirectory.Execute(CodeActivityContext context)
at System.Activities.CodeActivity.InternalExecute(ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager)
at System.Activities.ActivityInstance.Execute(ActivityExecutor executor, BookmarkManager bookmarkManager)
at System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor executor, BookmarkManager bookmarkManager, Location resultLocation)

好像之前的构建没有释放对 dll 的控制,所以下一次构建时 运行 它无法清除目录以拉下新代码。

如有任何帮助,我们将不胜感激。我不能成为 TFS 2015 上唯一 运行ning NUnit 的人

packages 文件夹签入源代码管理时,我看到过这样的行为。删除 packages 文件夹(理想情况下,通过 NuGet.config 的设置忽略它!)并让构建过程适当地恢复包。

您还应该考虑迁移到新的构建系统,因为它在大多数方面都优于旧的 XAML 构建系统。

我最终将 NUnitTestAdapter 添加到构建服务器上可以自动找到和使用的位置。然后可以将它从从 NuGet 获取的包中删除。

如此处所述

http://www.codewrecks.com/blog/index.php/2015/03/16/running-nunit-tests-in-a-tfs-2015-build-vnext/