【问题标题】:Nuget Package Restore Not Working In TFS 2015Nuget 包还原在 TFS 2015 中不起作用
【发布时间】:2015-10-11 15:06:47
【问题描述】:

Nuget 包还原对我们使用 TFS 2015 RC2 和使用 Visual Studio 2015 的构建服务器根本不起作用。我有一个 Visual Studio 构建任务,选中了“恢复 Nuget 包”,但该步骤之前没有进行任何恢复开始构建,然后失败。没有错误或任何可以提示我出什么问题的东西。只是没有关于包恢复的输出。我还尝试添加一个 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 文件?

【问题讨论】:

    标签: tfs visual-studio-2015 tfs-2015


    【解决方案1】:

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

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

    【讨论】:

    • 这对我来说似乎完全倒退了。 VS 2015 不需要 packages.config 来进行 nuget 恢复,它不会像在 VS 2013 中那样为您创建一个。如果需要,这意味着我们必须在添加时手动维护此 packages.config nuget 包到我们的解决方案。
    • @brushwood 据我所知,唯一一次“VS 2015 不需要 packages.config”是在 ASP.NET 5 项目中。在这种情况下,需要通过dnu 完成包恢复。
    【解决方案2】:

    所描述的行为可能还有其他原因。 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"
    }
    

    【讨论】:

    • 我们没有任何 packages.config 文件或 csproj 文件。 nuget 依赖项都列在 project.json 中。 Visual Studio 2015 使用此文件执行 nuget 包还原。 TFS 2015 构建代理不应该以同样的方式工作吗?
    • 当然,构建部分应该符合VS可以做到的,但今天显然不支持。至少,据我所知,VSBuild 和 MSBuild 任务都依赖于 packages.config 来进行 nuget 恢复。
    • 我真的希望我只是遗漏了一些东西,并且这应该可以自动工作......或者至少有某种方法可以生成 packages.config。哦,好吧,我想我会开始手动创建一些 packages.config 文件。
    • 添加 packages.config 实际上并没有做任何事情。旧式包恢复运行并将 nuget 包下载到 /packages 文件夹,但 VS 2015 不用于任何操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-11
    • 2016-08-23
    • 2012-02-19
    • 1970-01-01
    • 2015-12-02
    • 2017-12-04
    相关资源
    最近更新 更多