簡體   English   中英

如何在 Azure 管道中恢復 NuGet package?

[英]How to restore NuGet package in Azure Pipeline?

我是 Azure DevOps 的新手,並試圖創建我的第一個 Azure 管道。 我有一個 ASP.NET MVC 項目,在 MSBuild 步驟之前需要恢復一些 NuGet 包。

不幸的是,NuGet 還原失敗並出現以下錯誤:

管道無效。 作業 Job_1:步驟“NuGetCommand”引用版本“2.194.0”的任務“NuGetCommand”包含一個執行處理程序,該處理程序依賴於受管理員限制的 NodeJS 版本“6”。

NodeJS 6 開箱即用被禁用,因此我們不會啟用它。

我的問題:

  1. 是否有不使用 NodeJS 的 NuGet 恢復的替代方法?
  2. 有沒有辦法將 NodeJS6 更新到更高版本?

使用 NodeJS 的是 AzureDevOps 的NuGetCommand任務,而不是 NuGet 本身。 因此,您可以找到一種無需使用 Azure DevOps 的NuGetCommand任務即可恢復的方法。

想法 1:改用DotnetCoreCli任務 但是,這可能對您不起作用,因為您說您的項目是 ASP.NET MVC,而不是 ASP.NET 核心。 此外, 它似乎還需要 NodeJS 才能運行

思路2:使用MSBuild恢復。 您可以通過清除全局包文件夾或臨時將 NuGet 配置為使用不同的路徑,然后從開發人員 Z3D265B4E1EEEF0DDF17881FA00 CCZ 提示符運行msbuild -t:restore My.sln在本地計算機上測試這是否有效如果您的項目使用packages.config,而不是PackageReference,您還需要傳遞-p:RestorePackagesConfig=true (盡管這可能目前已損壞)。 我不是 Azure Pipelines 任務的專家,所以我不知道這個任務定義了 PowerShell 和 Node execution entry points是什么意思,但也許這意味着即使你的 CI 代理不允許 NodeJS,它也能工作。

想法 3:不要使用任何內置任務,只需使用 -script - script:或 -task - task: PowerShell@2 ,但即使這樣也有點疑問,因為即使是 powershell 任務也定義了一個節點執行條目點 我猜它會起作用,但我無法訪問禁止 NodeJS 的 CI 代理,所以即使我想也無法測試。 無論如何,如果這可行,那么您可以自己運行 MSBuild(但如果 msbuild.exe 不在路徑上,您也可能有責任找到它)。 或者您可以自己下載 nuget.exe 並在腳本中執行。 關鍵是,如果你能讓 Azure Pipeline 的script任務正常工作,你可以運行任何腳本並自己做你需要的一切。

想法 4: 使用 Microsoft 托管代理 他們已經記錄了他們在機器上預安裝的所有軟件,其中包括 Node JS。 不利的一面是,一旦超過免費配額,它就會花錢,而且我曾為那些更容易獲得資金一次性購買硬件的公司工作,並假裝服務器的維護是免費的,即使它降低了團隊的生產力,而不是每月支付服務費。 所以,如果這不是你的選擇,我會完全理解。

想法 5:與維護您的 CI 代理的人交談,並說服他們允許並安裝 NodeJS。 它顯然是 Azure 管道的基本部分。 這些任務在 github 上是開源的,您可以看到幾乎所有這些任務都使用 NodeJS 來編排它所做的任何工作。 坦率地說,我認為代理軟件本身就是一個 NodeJS 應用程序,所以我很驚訝它在沒有 NodeJS 的情況下運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM