.net - 如何通过 VSTS Nuget feed 在 Visual Studio Team Services 托管构建代理上使用 dotnet Restore

标签 .net azure-devops nuget-package-restore

我有一个 .Net Core 1.0 类库,它使用托管在 Visual Studio Team Services Nuget 源中的 Nuget 包。

我们使用 Visual Studio Team Services 来构建类库,并拥有一个构建定义,其中包含一个对项目执行 dotnet 恢复 的构建步骤。该命令失败并出现以下错误:

2016-06-28T13:07:09.0634265Z ##[warning]File name doesn't indicate a full path to a executable file.
2016-06-28T13:07:09.0644179Z Executing the following command-line. (workingFolder = C:\a\1\s)
2016-06-28T13:07:09.0644179Z dotnet restore
2016-06-28T13:07:09.0654186Z Error message highlight pattern: 
2016-06-28T13:07:09.0654186Z Warning message highlight pattern: 
2016-06-28T13:07:11.6393062Z log  : Restoring packages for C:\a\1\s\src\Company.Extensions\project.json...
2016-06-28T13:07:11.7623059Z info :   GET https://Company.pkgs.visualstudio.com/DefaultCollection/_packaging/FeedName/nuget/v2/FindPackagesById()?id='Company.Model'
2016-06-28T13:07:11.8463064Z info :   GET https://api.nuget.org/v3-flatcontainer/Company.model/index.json
2016-06-28T13:07:12.0162954Z info :   Unauthorized https://Company.pkgs.visualstudio.com/DefaultCollection/_packaging/FeedName/nuget/v2/FindPackagesById()?id='Company.Model' 254ms
2016-06-28T13:07:12.0702952Z log  : Retrying 'FindPackagesByIdAsyncCore' for source 'https://Company.pkgs.visualstudio.com/DefaultCollection/_packaging/FeedName/nuget/v2/FindPackagesById()?id='Company.Model''.
2016-06-28T13:07:12.0712954Z log  : Response status code does not indicate success: 401 (Unauthorized).
2016-06-28T13:07:12.0712954Z info :   GET https://Company.pkgs.visualstudio.com/DefaultCollection/_packaging/FeedName/nuget/v2/FindPackagesById()?id='Company.Model'
2016-06-28T13:07:12.0722952Z info :   NotFound https://api.nuget.org/v3-flatcontainer/Company.model/index.json 224ms
2016-06-28T13:07:12.1426754Z info :   Unauthorized https://Company.pkgs.visualstudio.com/DefaultCollection/_packaging/FeedName/nuget/v2/FindPackagesById()?id='Company.Model' 73ms
2016-06-28T13:07:12.1436737Z log  : Retrying 'FindPackagesByIdAsyncCore' for source 'https://Company.pkgs.visualstudio.com/DefaultCollection/_packaging/FeedName/nuget/v2/FindPackagesById()?id='Company.Model''.
2016-06-28T13:07:12.1436737Z log  : Response status code does not indicate success: 401 (Unauthorized).
2016-06-28T13:07:12.1446974Z info :   GET https://Company.pkgs.visualstudio.com/DefaultCollection/_packaging/FeedName/nuget/v2/FindPackagesById()?id='Company.Model'
2016-06-28T13:07:12.2162787Z info :   Unauthorized https://Company.pkgs.visualstudio.com/DefaultCollection/_packaging/FeedName/nuget/v2/FindPackagesById()?id='Company.Model' 72ms
2016-06-28T13:07:12.2172786Z error: Failed to retrieve information from remote source 'https://Company.pkgs.visualstudio.com/DefaultCollection/_packaging/FeedName/nuget/v2/FindPackagesById()?id='Company.Model''.
2016-06-28T13:07:12.2172786Z error: Response status code does not indicate success: 401 (Unauthorized).
2016-06-28T13:07:12.2364584Z error: Failed to retrieve information from remote source 'https://Company.pkgs.visualstudio.com/DefaultCollection/_packaging/FeedName/nuget/v2/FindPackagesById()?id='Company.Model''.
2016-06-28T13:07:12.2374607Z error:   Response status code does not indicate success: 401 (Unauthorized).

显然它会失败,因为 FeedName 要求我们对其进行身份验证,这就是为什么我们在 project.json 旁边还有这个 nuget.config 文件:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
    <add key="FeedName" value="https://Company.pkgs.visualstudio.com/DefaultCollection/_packaging/FeedName/nuget/v2" />
  </packageSources>
  <packageRestore>
    <add key="enabled" value="True" />
    <add key="automatic" value="True" />
  </packageRestore>
  <bindingRedirects>
    <add key="skip" value="False" />
  </bindingRedirects>
  <FeedName>
    <add key="Username" value="username" />
    <add key="ClearTextPassword" value="the_actual_clear_text_password" />
  </FeedName>
</configuration>

如果我们使用 Nuget Installer 构建步骤,则此方法有效,但使用 dotnet Restore 则无效。

请帮忙,这是我们继续使用 Visual Studio Team Services 构建项目所需的缺失部分。

最佳答案

详情可以引用此链接:.NET Core .

.NET Core doesn't currently support encrypted credentials. To use VSTS NuGet feeds with .NET Core applications, you'll need to specify a Personal Access Token in plain text.

关于.net - 如何通过 VSTS Nuget feed 在 Visual Studio Team Services 托管构建代理上使用 dotnet Restore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38093879/

相关文章:

azure - 在 Azure Devops Pipeline 中构建 API 和集成测试工件

azure - 无法使用 Azure Pipelines 将 Remix 应用程序部署到 Azure 应用程序服务

nuget - 迁移的 Visual Studio 项目未找到 NuGet 包

c# - 使用来自非托管代码的托管 COM 对象

c# - Moq - 如何验证属性值是否通过 setter 设置

c# - 运行时本地化

azure - 如何从 Azure DevOps 管道运行 "docker login azure"

c# - 为项目还原 NuGet 包失败... : Could not find a part of the path

TFS 无法还原 NuGet 包

c# - VSTO WPF 模式对话框光标在文本框中不闪烁