在Azure DevOps中无法构建解决方案中的单个项目

9

我正在尝试使用Azure Devops创建新的构建流程。我可以构建整个解决方案,但是无法为同一解决方案中的单个项目构建。

我遇到了以下错误:

nuget命令失败,退出码为(1),错误信息为(无法确定要还原NuGet包的包文件夹。请指定-PackagesDirectory或-SolutionDirectory。) 包还原失败

请问有人能帮帮我吗?


你查询过这个问题吗?https://dev59.com/JJbfa4cB1Zd3GeqPsl4z - Panu Oksala
我更新了帖子标题,因为该帖子并不是在询问如何构建一个项目。该帖子询问的是如何解决只有一个项目无法构建的问题。帖子的标题完全误导了读者... - Ziggler
1个回答

8
在Azure DevOps中只构建一个解决方案项目
要解决此问题,您应该指定一个目录让Nuget保存还原的Nuget包,例如: enter image description here 当我通过packages.config/项目文件还原一个项目的Nuget包时,我们应该展开nuget还原任务上的高级选项,然后指定一个目录,我将其设置为默认包目录,..\packages。然后测试它,它成功还原了:
2019-02-01T06:18:22.1311238Z ##[section]Starting: NuGet restore

....

2019-02-01T06:18:28.3155511Z [command]C:\VSTS-vs2017-agent\_work\_tool\NuGet\4.3.0\x64\nuget.exe restore C:\VSTS-vs2017-agent\_work\5\s\TestSample\TestSample\TestSample.csproj -PackagesDirectory ..\packages -Verbosity Detailed -NonInteractive -ConfigFile C:\VSTS-vs2017-agent\_work\5\Nuget\tempNuGet_169.config

2019-02-01T06:18:37.0366771Z All packages listed in packages.config are already installed.
2019-02-01T06:18:37.0594978Z ##[section]Finishing: NuGet restore
2019-02-01T06:18:22.1311238Z ##[section]Starting: NuGet restore
2019-02-01T06:18:22.1319968Z ==============================================================================
2019-02-01T06:18:37.0366199Z C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\bin\msbuild.exe "C:\Windows\ServiceProfiles\NetworkService\AppData\Local\Temp\NuGetScratch\svd0ok2h.e2f.nugetinputs.targets" /t:GenerateRestoreGraphFile /nologo /nr:false /v:q /p:NuGetRestoreTargets="C:\Windows\ServiceProfiles\NetworkService\AppData\Local\Temp\NuGetScratch\bhkdd2rf.itk.nugetrestore.targets" /p:RestoreTaskAssemblyFile="C:\VSTS-vs2017-agent\_work\_tool\NuGet\4.3.0\x64\nuget.exe" /p:RestoreConfigFile="C:\VSTS-vs2017-agent\_work\5\Nuget\tempNuGet_169.config" /p:RestorePackagesPath="..\packages"
2019-02-01T06:18:37.0366350Z 
2019-02-01T06:18:37.0366771Z All packages listed in packages.config are already installed.
2019-02-01T06:18:37.0594978Z ##[section]Finishing: NuGet restore

错误原因:
当我们在Azure Devops中只为一个解决方案的一个项目构建或还原nuget包时,nuget会将nuget包还原到解决方案文件夹下的默认“\packages”文件夹中,但由于我们没有在构建/nuget还原任务中指定“.sln”文件,nuget不知道解决方案文件夹的位置。然后nuget会抛出该错误。因此,我们应该为nuget指定一个目录来保存还原nuget包。
希望这可以帮助您。

1
我找不到那个“目标目录”。 - HariHaran
1
@LeoLiu-MSFT 是的,我已经恢复了它并添加了更多信息。现在我需要在VSTS中完成它。 - HariHaran
1
@HariHaran,明白了,我会检查一下,然后尽快解决它。 - Leo Liu
@LeoLiu-MSFT,即使我将$(SolutionDir)更改为$(ProjectDir)..\,我仍然会收到undefined错误。 - HariHaran
1
这确实是解决方案。任务界面上的变量名并不是那么直观,花了一些时间才弄清楚“目标目录”是错误消息中-PackagesDirectory标志的等效项。 - seekingtheoptimal

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