簡體   English   中英

如何在 azure 批處理節點上安裝 .net core?

[英]How to install .net core on azure batch node?

我正在嘗試使用啟動任務在 azure 批處理節點上安裝 .net core 2.2 嗎? 我嘗試在啟動任務中使用的命令如下:

@powershell -NoProfile -ExecutionPolicy unrestricted -Command "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; &([scriptblock]::Create((Invoke-WebRequest -useb 'https://dot.net/v1/dotnet-install.ps1'))) -Runtime dotnet -Version 2.2.5"

啟動任務失敗。 此外,如果我在節點上手動運行腳本,它不會安裝 .net core sdk。

有什么幫助嗎?

這可能是老問題,但我會寫出對我有用的內容。 正如 Mike 嘗試做的那樣,我還使用啟動任務和 powershell 腳本在 Azure Batch 節點上安裝 .net 核心。

我驗證過,dot net core 確實安裝了,但在不同的位置,並且路徑沒有導出到環境變量,而只被當前進程使用。 這就是它實際上不起作用的原因

所以我在上面的 Start Task 代碼中做了 2 個更改

  1. 在我想安裝 .net core 的地方提供 InstallDir
  2. 導出環境變量的路徑。

請參閱下面的代碼使這件事起作用

powershell "if(!([Environment]::GetEnvironmentVariable('Path', 'Machine') -split ';' -contains \"$Env:ProgramFiles\dotnet\\\")) {[Environment]::SetEnvironmentVariable('Path', \"$([Environment]::GetEnvironmentVariable('Path', 'Machine'));$Env:ProgramFiles\dotnet\\\",'Machine');}"
powershell -NoProfile -ExecutionPolicy unrestricted -Command "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; &([scriptblock]::Create((Invoke-WebRequest -useb 'https://dot.net/v1/dotnet-install.ps1'))) -Channel LTS -InstallDir \"$Env:ProgramFiles\dotnet\\\""

在此之后,我可以在機器上運行我的 .net 核心代碼

古爾所說的是正確的。 您可以在啟動任務中通過resourceFiles安裝安裝文件。 從那里,您可以簡單地設置starttask命令行以首先指向啟動任務工作目錄(將在該目錄中下載文件)並運行setup命令。

此處進一步說明: https : //docs.microsoft.com/zh-cn/azure/batch/batch-api-basics#start-task

您可以在此處找到批處理環境變量: https : //docs.microsoft.com/zh-cn/azure/batch/batch-compute-node-environment-variables 建議您使用它們。 如果使用這些目錄的顯式路徑,則Microsoft可以隨時更改它的顯式路徑,這將在重新引導節點,重新映像節點或將新節點分配給池時引入其他問題。

示例: https//docs.microsoft.com/zh-cn/azure/batch/batch-compute-node-environment-variables#command-line-expansion-of-environment-variables

暫無
暫無

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

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