使用私有NuGet提要(VSTS CI Build)

时间:2017-02-28 20:29:21

标签: c# .net visual-studio azure-pipelines

此问题涉及Visual Studio团队服务中的持续集成功能,特别是在自动构建中。

我已经设置了构建定义来构建我的.net核心mvc应用程序。

它正在使用.NET核心v1并针对.net framework 4.5.2进行编译。

我已按照此处的说明操作:

https://www.visualstudio.com/en-us/docs/build/apps/aspnet/ci/build-aspnet-core

我在VSTS中设置了私有NuGet Feed 以下是添加包源参数的命令:

Sources Add -Name "CiiDLFeed" -UserName "<username>" -Password "<password>" -ConfigFile $(Build.SourcesDirectory)/Nuget.config -Source https://mycompany.pkgs.visualstudio.com/_packaging/DLFeed/nuget/v3/index.json

我收到的错误:

  

错误:无法加载源的服务索引   https://mycompany.pkgs.visualstudio.com/_packaging/DLFeed/nuget/v3/index.json。   错误:.NET Core不支持密码解密   平台。以下Feed使用加密密码:&#39; CiiDLFeed&#39;。   您可以使用明文密码作为解决方法。

为此,我添加了&#34; -StorePasswordInClearText&#34; NuGet source add命令的参数:

Sources Add -Name "CiiDLFeed" -UserName "<username>" -Password "<password>" -ConfigFile $(Build.SourcesDirectory)/Nuget.config -Source https://mycompany.pkgs.visualstudio.com/_packaging/DLFeed/nuget/v3/index.json -StorePasswordInClearText

现在,我收到401错误:

  

错误:无法加载源的服务索引   https://mycompany.pkgs.visualstudio.com/_packaging/DLFeed/nuget/v3/index.json。   错误:响应状态代码不表示成功:401   (未授权)。

我使用在单独的构建定义中正确工作的相同确切凭据,访问相同的nuget Feed(.NET Web表单应用程序),因此它不应该给我401。

我还尝试在私有Feed中简单地引用库dll而不是NuGet包,但这似乎不适用于.NET Core:

  

.NET核心项目仅支持引用.NET框架程序集   在这个版本中。要引用其他程序集,它们必须是   包含在NuGet包中并引用该包。

2 个答案:

答案 0 :(得分:1)

我们使用的解决方法是设置本地NuGet源,它是项目中的目录。然后将.nupkg文件添加到其中,并在项目中引用它们。

这允许VSTS CI构建访问您的NuGet包,而无需设置远程NuGet源。

例如:

project_directory/
    ... project files ...
    my_nuget_repo/
        mypackage.nupkg

添加本地来源:

nuget sources add -Name "my_nuget_repo" -Source "<path_to_project>/my_nuget_repo"

答案 1 :(得分:-1)

您需要使用自己的Nuget.Config文件(可以使用PAT作为密码):

  1. 将Nuget.Config文件(包括相应的packageSource)添加到源代码管理
  2. 修改您的构建定义
  3. 删除/禁用用于添加包源的命令行步骤
  4. 选择.Net Core(预览)恢复步骤。
  5. 参数如:

    --configfile $(build.sourcesdirectory)/ConsoleAppCore/Nuget.Config
    

    注意:您可以在解决方案根目录下创建或编辑NuGet.config,在project.json文件旁边并检查源代码控制,这样,您就不需要为.Net Core还原指定configfile参数步骤