恢复包时 dotnet build 命令失败

Ufu*_*arı 3 nuget nuget-package-restore azure-devops

我有一个项目在本地构建得很好,但在 VSTS 中构建却在dotnet build命令中失败。这个错误对我来说看起来很奇怪,因为我不知道为什么构建命令会尝试再次恢复包。错误如下所示:

2018-07-09T11:06:48.2541705Z 重试源“FindPackagesByIdAsync” https://mycompany.pkgs.visualstudio.com/_packaging/5b9fd539-d653-4771-aa3c-6544d73b1234/nuget/v3/flat2/system.data .sqlclient/index.json '. 2018-07-09T11:06:48.2562315Z 响应状态代码不表示成功:401(未经授权)。

在构建步骤之前,我有一个已成功完成的 dotnet 恢复步骤。恢复步骤使用 NuGet.config 文件,其中包含 VSTS 中的私有源,但 URL 看起来与错误中的 URL 不相似。这是为了清楚起见而提供的文件。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="MyCompany.NuGet.Internal" value="https://MyCompany.pkgs.visualstudio.com/_packaging/MyCompany.NuGet.Internal/nuget/v3/index.json" />
    <add key="MyCompany.NuGet.ThirdParty" value="https://MyCompany.pkgs.visualstudio.com/_packaging/MyCompany.Nuget.ThirdParty/nuget/v3/index.json" />
  </packageSources>
</configuration>
Run Code Online (Sandbox Code Playgroud)

这里可能有什么问题?dotnet 构建步骤是否完全忽略 NuGet.config 文件并尝试项目中的提要?我不知道该提要 URL 是如何生成的。

Ufu*_*arı 5

我能够通过将--no-restore参数传递给dotnet build命令来解决该问题。

我刚刚在这里读了这篇文章,想尝试一下,结果成功了。

使用 .NET Core 1.x SDK,您需要在运行 dotnet build 之前显式运行 dotnet Restore。从 .NET Core 2.0 SDK 开始,当您运行 dotnet build 时,dotnet Restore 会隐式运行。如果要在运行构建命令时禁用隐式恢复,可以传递 --no-restore 选项

看起来dotnet buildVSTS 并不关心 NuGet.config 文件,并尝试在没有它的情况下进行恢复。