Nuget Package Restore在TFS 2015中不起作用

时间:2015-07-21 23:19:38

标签: tfs visual-studio-2015 tfs2015

使用TFS 2015 RC2和使用Visual Studio 2015的构建服务器,Nuget包恢复根本无法正常工作。我有一个Visual Studio Build任务,其中选中了“Restore Nuget Packages”但该步骤之前没有进行任何恢复开始构建,然后失败。没有任何错误或任何东西可以提示我会出现什么问题。关于包恢复没有任何意义。我还尝试添加一个nuget包恢复步骤,尽管它看似多余,但也没有做任何事情。没有ouptut。构建代理日志如下所示:

23:02:49.826405 PowerShellHandler.Execute - AddCommand(C:\TFSAgent\tasks\NuGetInstaller\0.1.11\NuGetInstaller.ps1)
23:02:49.826405 PowerShellHandler.Execute - Add inputParameters
23:02:49.826405 PowerShellHandler.Execute - AddParameter(solution=C:\TFSAgent\_work\9c9a7daa\HiFxApi\main\src\HiFX.Api.sln)
23:02:49.826405 PowerShellHandler.Execute - AddParameter(excludeVersion=false)
23:02:49.826405 PowerShellHandler.Execute - AddParameter(noCache=false)
23:02:49.826405 PowerShellHandler.Execute - AddParameter(nuGetRestoreArgs=)
23:02:49.826405 PowerShellHandler.Execute - AddParameter(nuGetPath=)
23:02:50.074443 PowerShellHandler.Execute - Invoke

23:02:50.275946 FindFiles.FindMatchingFiles(rootFolder = , matchPattern = C:\TFSAgent\_work\9c9a7daa\HiFxApi\main\src\**\packages.config, includeFiles = True, includeFolders = False
23:02:50.275946 FindFiles.GetMatchingItems(includePatterns.Count = 1, excludePatterns.Count = 0, includeFiles = True, includeFolders = False
23:02:50.291644 FindFiles.FindMatchingFiles - Found 0 matches
23:02:50.322449 BaseLogger.LogStatus(scope.JobId = e0495eb1-3867-4bdf-8c90-196620cc0e1d, scope.TimelineRecordId = 6ac5c739-f581-4081-9cab-1404f28bfcc3, record.Name = )
23:02:50.322449 BaseLogger.LogFile(scope.JobId = e0495eb1-3867-4bdf-8c90-196620cc0e1d, path = C:\TFSAgent\_diag\w2ec95c01-f3c6-4db4-b910-0d40c922051b.log)
23:02:50.322449 JobExtensionManager.OnAfterExecuteTask
23:02:50.322449 BaseLogger.LogStatus(scope.JobId = e0495eb1-3867-4bdf-8c90-196620cc0e1d, scope.TimelineRecordId = 6ac5c739-f581-4081-9cab-1404f28bfcc3, record.Name = )
23:02:50.322449 BaseLogger.LogConsoleMessage(scope.JobId = e0495eb1-3867-4bdf-8c90-196620cc0e1d, message = ##[section]Finishing task: NuGetInstaller)
23:02:50.322449 LoggingEventHandlerManager.LoadLoggingEventHandlers(pluginPath=)

我是否应该使用我的解决方案检入packages.config文件?

2 个答案:

答案 0 :(得分:1)

你说得对,你需要将packages.config提交给你的VCS。它包含解决方案中使用的包列表(+版本和目标框架)。

日志中的

FindFiles.FindMatchingFiles - Found 0 matches提示构建代理查找的是packages.config文件,找不到,因此假设没有任何内容可以恢复并退出而没有错误。

答案 1 :(得分:0)

所述行为可能还有其他原因。 nuget restore操作(在VSBuild任务中实现的方式)搜索解决方案文件目录下的packages.config文件。

例如,如果解决方案布局类似于下面的解决方案布局,nuget restore将无法找到packages.config并且将无所事事:

  • 文件夹A.
    • 文件夹A1
    • 文件夹A2
      • 文件夹A21
    • a.csproj
    • a.sln
  • 文件夹B.
    • b.csproj
    • packages.config

您可以查看the code of VSBuild build task以了解更多详情:

$slnFolder = $(Get-ItemProperty -Path $sf -Name 'DirectoryName').DirectoryName

Write-Verbose "Searching for nuget package configuration files using pattern $slnFolder\**\packages.config"
$pkgConfig = Find-Files -SearchPattern "$slnFolder\**\packages.config"
if ($pkgConfig)
{
   Write-Verbose "Running nuget package restore for $slnFolder"
   Invoke-Tool -Path $nugetPath -Arguments "restore `"$sf`" -NonInteractive" -WorkingFolder $slnFolder
}
else
{
   Write-Verbose "No nuget package configuration files found for $sf"
}