【发布时间】:2017-04-03 12:38:51
【问题描述】:
我想在由 msbuild 15 项目组成的解决方案中从私有源(vsts 内部源)恢复 nuget 包,然后构建(并打包)这些项目。
我正在使用需要构建的 VS 2017 托管代理。
我尝试在启用(已弃用的)包恢复的情况下使用 msbuild 进行恢复。这导致没有包被恢复。日志的相关部分:
2017-04-03T12:21:23.5543508Z ##[警告]“还原 NuGet 包”选项已弃用。要在构建中恢复 NuGet 包,请将 NuGet 安装程序任务添加到构建定义中。
2017-04-03T12:21:23.5803410Z ##[command]"C:\LR\MMS\Services\mms\TaskAgentProvisioner\Tools\agents\2.115.0\externals\nuget\NuGet.exe"恢复" C:\a\1\s\mysolution.sln" -NonInteractive
2017-04-03T12:21:24.5231560Z MSBuild 自动检测:使用来自“C:\Windows\Microsoft.NET\Framework\v4.0.30319”的 msbuild 版本“4.0”。
我已尝试使用 nuget 安装程序任务进行恢复。这失败了
2017-04-03T12:21:05.3231625Z [命令]C:\a_tasks\NuGetInstaller_333b11bd-d341-40d9-afcf-b32d5ce6f23b\0.2.29\node_modules\nuget-task-common\NuGet\3.5.0\NuGet .exe restore -NonInteractive C:\a\1\s\mysolution.sln -Verbosity 详细 -msbuildversion 15
2017-04-03T12:21:07.5100892Z NuGet 版本:3.5.0.1938
2017-04-03T12:21:07.8293660Z System.AggregateException:发生一个或多个错误。
---> NuGet.CommandLine.CommandLineException: 无法加载 msbuild 工具集
---> System.IO.FileNotFoundException:无法加载文件或程序集“Microsoft.Build,Version=14.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。系统找不到指定的文件。
请注意,我将 msbuildversion -15 作为附加参数传入,但似乎 nuget 尝试加载 msbuild 14。
我尝试使用 dontnet cli dotnet restore 进行恢复。这失败了
2017-04-03T12:21:08.3424716Z [命令]C:\Program Files\dotnet\dotnet.exe 恢复 C:\a\1\s\path\to\my\csproj
2017-04-03T12:21:12.8146350Z 正在为 C:\a\1\s\path\to\my\csproj 恢复包...
2017-04-03T12:21:12.8146350Z C:\Program Files\dotnet\sdk\1.0.0\NuGet.targets(97,5):错误:无法加载源 https://myvstsaccount.pkgs.visualstudio.com/_packaging/Toolsfeed/nuget/v3/index.json 的服务索引。 [C:\a\1\s\path\to\my\csproj]
2017-04-03T12:21:12.8146350Z C:\Program Files\dotnet\sdk\1.0.0\NuGet.targets(97,5):错误:响应状态码不表示成功:401(未经授权)。 [C:\a\1\s\path\to\my\csproj]
2017-04-03T12:21:12.8176375Z ##[error]Dotnet 命令失败,退出代码非零:1。
我的解决方案目录中的nuget.config 是
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="VSTS Tools Feed" value="https://myvstsaccount.pkgs.visualstudio.com/_packaging/Toolsfeed/nuget/v3/index.json" />
</packageSources>
<apikeys>
<add key="https://myvstsaccount.pkgs.visualstudio.com/_packaging/Toolsfeed/nuget/v3/index.json" value="<A PAT generated from an account with access to the feed>" />
</apikeys>
</configuration>
并且任务的日志显示该配置已被使用。
从 VS 或使用 nuget 4.0 的 nuget cli 本地包恢复工作正常。
我应该使用什么任务来恢复 msbuild 15 项目的包,以及如何配置身份验证?
【问题讨论】:
-
根据第二个日志,你用的是nuget 3.5吗?请尝试使用 nuget 4.0 并在 NuGet Installer 任务中指定路径。
-
@Marina-MSFT nuget 4.0 是否已经存在于 vs 2017 托管构建代理中?如果是这样,在什么路径上?如果没有,推荐的获取方式是什么?只需从 powershell 脚本中获取二进制文件?
-
不,不是。我在回答中列出了详细信息。
-
如下所述,它现在可用
标签: nuget azure-pipelines