2017-02-28 145 views
3

這個問題是關於Visual Studio團隊業務的不斷整合功能,特別是在自動構建。.NET核心的NuGet還原失敗,私人的NuGet飼料(VSTS CI構建)

我已經成立了一個生成定義建立我的.NET的核心MVC應用程序。

它是使用.NET的核心v1和編制針對.NET框架4.5.2。

我在這裏跟着指示:

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

我有一個私人的NuGet飼料中VSTS 這裏設置是將程序包料源的命令:

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 

我收到的錯誤:

error: Unable to load the service index for source https://mycompany.pkgs.visualstudio.com/_packaging/DLFeed/nuget/v3/index.json . error: Password decryption is not supported on .NET Core for this platform. The following feed uses an encrypted password: 'CiiDLFeed'. You can use a clear text password as a workaround.

針對這個問題,我補充說:「-StorePasswordInClearText」參數來的NuGet源添加命令:

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錯誤:

error: Unable to load the service index for source https://mycompany.pkgs.visualstudio.com/_packaging/DLFeed/nuget/v3/index.json . error: Response status code does not indicate success: 401 (Unauthorized).

我使用的是完全相同的憑據在一個單獨的構建定義工作正常,訪問相同的Nuget飼料(一個.NET Web窗體應用程序),所以它不應該給我一個401.

我也試圖簡單地引用庫DLL而不是NuGet打包在一個私人飼料,但似乎是沒有牛逼可能與.NET的核心:

.NET core projects only support referencing .NET framework assemblies in this release. To reference other assemblies, they need to be included in a NuGet package and reference that package.

+0

嘗試使用V2爲feed地址。我發現v3並不總是可靠的 – trailmax

+0

@trailmax我仍然遇到'v2'的401錯誤。感謝您的建議 –

+0

您是否使用實際密碼或個人訪問令牌作爲密碼? – trailmax

回答

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" 
0

你需要自己Nuget.Config文件,而不是(可使用PAT作爲密碼):

  1. 添加Nuget.Config文件(包括相應的packageSource)至源控制
  2. 編輯您的構建定義
  3. 刪除/禁用命令行的步驟,用來添加包源
  4. 選擇對.NET核心(預覽)還原步驟。

參數,如:

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

注意:您可以創建或解決方案根編輯NuGet.config,旁邊project.json文件,並檢查到源頭控制,用這種方式,你不需要爲.Net Core還原步驟指定configfile參數。

+0

你會在NuGet.config中包含指定NuGet源代碼的語法嗎? –

+0

@JamesWierzba語法就像你說的nuget sources add ...一樣,在你本地機器和相應的Nuget.config(缺省爲%APPDATA%\ NuGet)中對源代碼進行控制。 –

+0

@JamesWierzba使用PAT是更好的方式,它對我來說工作正常。嘗試使用PAT作爲密碼並檢查結果。 –