2

Nuget 包还原对我们使用 TFS 2015 RC2 和使用 Visual Studio 2015 的构建服务器根本不起作用。我有一个 Visual Studio Build 任务,选中了“Restore Nuget Packages”,但该步骤在开始构建之前没有执行任何恢复,然后失败。没有错误或任何可以提示我出什么问题的东西。只是没有关于包恢复的输出。我还尝试添加一个 nuget 包恢复步骤,尽管它看起来是多余的,但这也无济于事。没有输出。构建代理日志如下所示:

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 文件吗?

4

2 回答 2

1

没错,您需要将 packages.config 提交到您的 VCS。它包含解决方案中使用的包列表(+ 其版本和目标框架)。

FindFiles.FindMatchingFiles - Found 0 matches在您的日志提示中,构建代理查找了 packages.config 文件,但没有找到,因此假定没有任何内容可恢复并在没有错误的情况下退出。

于 2015-07-22T06:37:54.927 回答
0

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

例如,如果解决方案布局类似于下面的布局,nuget restore将找不到 packages.config 并且什么也不做:

  • 文件夹 A
    • 文件夹 A1
    • 文件夹 A2
      • 文件夹 A21
    • 一个.csproj
    • a.sln
  • 文件夹 B
    • b.csproj
    • 包.config

您可以检查VSBuild 构建任务的代码以了解更多详细信息:

$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"
}
于 2015-07-22T14:57:52.453 回答