繁体   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