Visual Studio团队服务持续集成:NuGet还原任务失败

7
我正在使用团队服务(曾用名Visual Studio Online)中的持续集成功能。我的构建定义目标是解决方案中的一个特定项目(而不是整个解决方案),即ClientUI MVC网站。
该解决方案包含三个项目:
1. ClientUI 2. AdminUI 3. Client Services

enter image description here

客户端UI项目的构建定义:
代码库:

enter image description here

Nuget安装程序步骤: 我尝试了不同的参数,但都没有起作用。 在此输入图片描述

Visual Studio构建

enter image description here

在尝试针对单个项目进行目标定位之前,我的构建定义是使用以下参数定位整个解决方案:
  1. NuGet安装程序 -> 路径到解决方案:**\*.sln
  2. Visual Studio Build -> 解决方案:**\*.sln ; MSBuild参数:/p:outdir=$(build.artifactstagingdirectory)
它有效。但是现在,在Nugget Restore Task中会生成此错误:

2016-04-22T21:07:00.6716725Z Set workingFolder to default: C:\LR\MMS\Services\Mms\TaskAgentProvisioner\Tools\agents\1.98.1\tasks\NuGetInstaller\0.1.25
2016-04-22T21:07:00.8163908Z Executing the powershell script: C:\LR\MMS\Services\Mms\TaskAgentProvisioner\Tools\agents\1.98.1\tasks\NuGetInstaller\0.1.25\NuGetInstaller.ps1


2016-04-22T21:07:01.5283529Z ##[error]Cannot find path 'C:\a\1\s\packages.config' because it does not exist.
2016-04-22T21:07:01.5439897Z C:\LR\MMS\Services\Mms\TaskAgentProvisioner\Tools\agents\1.98.1\agent\worker\tools\NuGet.exe restore "C:\a\1\s\packages.config"  -NonInteractive


2016-04-22T21:07:03.0441507Z MSBuild auto-detection: using msbuild version '14.0' from 'C:\Program Files (x86)\MSBuild\14.0\bin'.


2016-04-22T21:07:03.0597010Z ##[error]Cannot determine the packages folder to restore NuGet packages. Please specify either -PackagesDirectory or -SolutionDirectory.
2016-04-22T21:07:03.0909881Z ##[error]Unexpected exit code 1 returned from tool NuGet.exe


客官,请问在ClientUI文件夹中有packages.config文件吗?您尝试过在解决方案级别映射packages文件夹吗? - jessehouwing
是的,在ClientUI文件夹中存在packages.config。这就是我在Nugget Installer中指定的内容。我也尝试过**\.sln*,但没有成功。 - Hussein Salman
我的意思是将“packages”文件夹添加到与客户端UI相同的父文件夹中,并将其映射到您的存储库配置中的映射文件夹中。 - jessehouwing
我更改了存储库配置,并添加了一个新的映射,其中_ServerPath_为'$ /MySite/BerkeleyWeb/packages',LocalPath_为'packages',还将第一个映射的_LocalPath_更改为'ClientUI'。然而,NuGet任务失败并显示以下错误:## [error]属性DirectoryName不存在或未找到。

[error]无法找到解决方案文件。

[error]工具NuGet.exe返回意外的退出代码1._

- Hussein Salman
将映射到sln文件对我有效。 - maxisam
3个回答

5
尝试将“Nuget安装程序”任务中的“安装类型”设置为“安装”,因为您正在使用“packages.config”来安装软件包。 enter image description here

谢谢@Eddie。将其更改为“Install”后,“Nugget Install”步骤成功运行,但是“Build Solution”出现错误:“_此项目引用了此计算机上缺失的NuGet包。请使用NuGet Package Restore来下载它们。有关更多信息,请参阅http://go.microsoft.com/fwlink/?LinkID=322105。丢失的文件是..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props._”。然而,在Nugget Install步骤日志中,我发现它已经添加了:“_已将软件包'Microsoft.Net.Compilers.1.0.0'添加到文件夹'C:\a\1\s'_”。 - Hussein Salman
@h.salman 包未安装到“packages”文件夹中。尝试在“Nuget参数”中添加“-OutputDirectory ..\packages”。 - Eddie Chen - MSFT

4

如果有人感到好奇,关于“请指定-PackagesDirectory或-SolutionDirectory”的错误来源是构建过程正在尝试发出类似于以下命令的命令:

C:\hostedtoolcache\windows\NuGet\4.4.1\x64\nuget.exe restore D:\a\1\s\MyProject\packages.config -PackagesDirectory packages -Verbosity Detailed -NonInteractive 

以下截图应该有助于您构建项目(而不是解决方案),如果您的nuget“packages”文件夹位于解决方案级别。
此外,您可能需要将其指定为项目构建任务中的“MSBuild参数”:/p:SolutionDir =“/”。

The csproj is your "solution."

If your "packages" folder is at the solution-level, then you want to have that as the Destination directory.


1
也许你应该澄清一下你展示的命令有什么问题。此外,截图具体如何帮助?你应该描述一下。 - Artjom B.
1
上面的截图在完全相同的情况下帮助了我:我只需要为解决方案中的一个项目还原程序包。 解决方法在最后一个截图的底部可以看到: 将目标目录指定为“packages” 就是这样 :) - Vladimír Hála

0

我遇到了同样的问题,通过更改映射来解决它 - 转到存储库选项卡,我将我的映射设置为另一个目录,这意味着NuGet安装程序无法执行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接