使用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文件?
答案 0 :(得分:1)
你说得对,你需要将packages.config提交给你的VCS。它包含解决方案中使用的包列表(+版本和目标框架)。
日志中的 FindFiles.FindMatchingFiles - Found 0 matches
提示构建代理查找的是packages.config文件,找不到,因此假设没有任何内容可以恢复并退出而没有错误。
答案 1 :(得分:0)
所述行为可能还有其他原因。 nuget restore
操作(在VSBuild任务中实现的方式)搜索解决方案文件目录下的packages.config文件。
例如,如果解决方案布局类似于下面的解决方案布局,nuget restore
将无法找到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"
}